IDENTIFIER = EXPRESSIONè un'espressione la cui valutazione cambia anche il contenuto di IDENTIFIER assegnandogli il valore di EXPRESSION; il valore di questa espressione è il valore finale di IDENTIFIER.
Un'espressione come sopra diventa uno statement se è seguita dal punto e virgola.
Per esempio, il seguente programma
#include <stdio.h>
main(){
int x = 9, y = 8 ;
y = ( x = 5 ) + 3 ;
printf("x = %d e y = %d.\n",x,y);
y = ( x == 5 ) + 3 ;
printf("x = %d e y = %d.\n",x,y);
}
prourrà il seguente output
x = 5 e y = 8. x = 5 e y = 4.Utilizzare questo costrutto con attenzione, poichè è molto facile fare errori (la seconda parte del programma sopra potrebbe benissimo essere il risultato di aver scritto = invece di ==).
#include <stdio.h>
int ReadInt(void)
/*legge un numero intero scritto nel formato segno sequenza di cifre */
{
char segno, cif;
int num = 0;
scanf("%c",&segno);
if((segno == '+') || (segno == '-')){
scanf("%c",&cif);
while((cif >= '0') && (cif <= '9')){
num = (num * 10) + (cif - '0');
scanf("%c",&cif);
};
return((segno =='+') ? num : -num);
}
else printf("ERRORE\n");
}
main(){
int num, somma = 0 ;
while((num = ReadInt()) >= 0)
somma = somma + num;
printf("La somma e\' %d .\n",somma);
}
Questo programma può anche essere scritto con costrutti più
standard modificando il suo main come segue
main(){
int num, somma = 0 ;
num = ReadInt();
while(num >= 0){
somma = somma + num;
num = ReadInt();
};
printf("La somma e\' %d .\n",somma);
}