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); }