[C] Istruzione if-else

di il
5 risposte

[C] Istruzione if-else

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.

5 Risposte

  • Re: [C] Istruzione if-else

    Devi rileggere la teoria allora.
    La clausola else non vuole condizione. Se ne devi mettere un'altra devi usare:
    
    if(condizione1) {
    } else if(condizione2) {
    } else if(condizione3) {
    }...
    
    Se ne hai solo due ti basta scrivere:
    if(condizione1) {
    } else {}
    Se è verificata la condizione 1 esegui il primo blocco di codice altrimenti (else) esegui l'altro (senza verificare nulla).

    Se ti serve aggiungere più condizioni devi aggiungere if else().
    E' sempre consigliato però terminare comunque con un else.
    Nel tuo caso:
    
    /* if */
    
    //commento c++
    
    #include <stdio.h>
    
    int main(){
    
       int a = 18;
    
       int b = 17;
    
       if (a == 18)
       {
          printf("cosi funziona\n");
       }
       else if(a == 17)
       {
          printf("cosi no");
       } else {
          printf("così ancora peggio");
       }
    
       return 0;
    }
    
    Spero di essere stato abbastanza chiaro.
  • Re: [C] Istruzione if-else

    Dove hai letto quella sintassi che hai riportato?

    E poi la if...else non è un ciclo, sono solo istruzioni.
  • Re: [C] Istruzione if-else

    Salve a tutti.

    si infatti. stamattina appena acceso il pc ci sono arrivato.

    l'else non vuole condizioni.
    la sintassi che ho riportato l'ho letta sul manuale: il linguaggio c guida pratica alla programmazione
  • Re: [C] Istruzione if-else

    Ok ma in quella guida la sintassi non è quella che hai riportato tu, ma quella corretta. Non so quindi da dove hai copiato quella sbagliata...
  • Re: [C] Istruzione if-else

    Sisi, non volevo dire che la guida è sbagliata. abbaglio mio.
Devi accedere o registrarti per scrivere nel forum
5 risposte