Salve a tutti,
ho iniziato da circa un paio di giorni a programmare in c e sono arrivato all'uso delle istruzioni che consento il controllo del flusso di esecuzione;
vale a dire il ciclo if-else.
ora, teoricamente, non mi sembra ci sia nulla di difficile. la sintassi mi sembra chiara :
if (condizione) {
istruzioni da eseguire;
}
else (condizione) {
istruzioni da eseguire;
}
svolgendo un banale esercizio, giusto per fissarlo in memoria, inizio, però, a riscontrare dei problemi.
il compilatore mi segnala:
if.c: In function ‘main’:
if.c:18:2: error: expected ‘;’ before ‘{’ token
{
^
cosi aggiungo, come dice, un punto e virgola prima della graffa di else
ed il risultato è che stampa entrambe le clausole del ciclo.
ora, credo che quanto accada sia ovvio perchè il punto e virgola termina l'istruzione
del ciclo if , che soddisfatta produce una stampa, poi esce ed incontra l'istruzione di
stampa, che era di else, e la stampa.
mi trovo su ubuntu 17.04 ed utilizzo gcc da terminale.
ho creduto potesse essere dovuto al fatto che, magari, il compilatore fosse orientato a c++ o c#
ma controllando i costrutti di cicli if-else in questi altri due linguaggi nessuno rispecchia l'errore sollevato
o esige un punto e virgola dove richiesto..ho tentato di inserire l'opzione --wall-pedantic ed un commento in stile
c e c++ per vedere quale mi segnalava ma non ha funzionato.
credo sia superfluo allegare il codice dell'esercizio ma posto:
/* if */
//commento c++
#include <stdio.h>
int main(){
int a = 18;
int b = 17;
if (a == 18)
{
printf("cosi funziona\n");
}
else(a == 17)
{
printf("cosi no");
}
return 0;
}
grazie mille per l'aiuto.
saluti.