[C] Programma con if

Bush1
Salve ragazzi,
Sono nuova, vorrei sapere perché quando avvio questo programma mi stampa in ogni caso l'if ( a = b = c = d) anche se non sono uguali.. come mai???



#include
#include
main()
{
int a,b,c,d,max;
printf("\nprimo numero a=");

scanf("%d",&a);

printf("\nsecondo numero b=");

scanf("%d",&b);

printf("\nterzo numero c=");

scanf("%d",&c);

printf("\nquarto numero d=");

scanf("%d",&d);
max=a;
if (b>max)
max=b;
if (c>max)
max=c;
if (d>max)
max=d;
printf("\nil massimo fra %d,%d,%d,%d e' \t %d\n\n",a,b,c,d,max);

if(a = b = c = d){
printf("Valori tutti uguali\n");
}
system ("PAUSE");
return 0;
}

Risposte
apatriarca
Per confrontare due valori devi usare due uguali. Inoltre non puoi confrontare in quel modo 4 valori. Puoi confrontare solo due valori per volta e usare && oppure || per legare le varie condizioni.

Summerwind78
Per prima cosa scrivere

if(a=b) {

    (codice nell'if)

}



non significa verificare se a e b sono uguali. Questo codice significa assegnare ad a il valore di b e il codice dentro l'if viene eseguito se il valore acquisito da a è maggiore di 0.

per fare un confronto tra variabili devi usare un doppio uguale

if(a==b) {

    (codice nell'if)

}



inoltre non puoi fare confronti multipli, ma solo a coppie di due pertanto per verificare se tutti e quattro i valori sono uguali hai più strade, te ne indico qui due.

Prima possibilità:

if(a==b) {

      if(b==c) {

            if(c==d) {
                 (codice da eseguire se le variabili sono uguali tra di loro)

            }

      }

}




Seconda possibilità:
if ((a==b) && (b==c) && (c==d) {
                 (codice da eseguire se le variabili sono uguali tra di loro

            }

vict85
"Summerwind78":
Per prima cosa scrivere

if(a=b) {

    (codice nell'if)

}



non significa verificare se a e b sono uguali. Questo codice significa assegnare ad a il valore di b e il codice dentro l'if viene eseguito se il valore acquisito da a è maggiore di 0.


:roll: Nel caso sia diverso da 0.

Summerwind78
"vict85":
[quote="Summerwind78"]Per prima cosa scrivere

if(a=b) {

    (codice nell'if)

}



non significa verificare se a e b sono uguali. Questo codice significa assegnare ad a il valore di b e il codice dentro l'if viene eseguito se il valore acquisito da a è maggiore di 0.


:roll: Nel caso sia diverso da 0.[/quote]


Vero scusa, ho ragionato con un unsigned int e non nel caso più generico :D

Bush1
Grazie mille ragazzi :)
Errore stupido lo so :P ma sono ancora agli inizi :oops: :oops:

onlyReferee
Eh, mi fai venire in mente tutte le volte che sbagliavo a scrivere $=$ invece di $==$ in un confronto.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.