Fondamentalmente c'è un punto di sequenza C++ 03 tra ogni istruzione. Per ulteriori informazioni vedere lo SO C++ FAQ. Per ulteriori informazioni consultare lo standard C++ e tenere presente che nel C++ 11 i punti di sequenza standard sono stati sostituiti con sequenziati prima dello e in sequenza dopo le relazioni.
Per evitare problemi, non cercare di essere troppo intelligente per fare molto in ogni espressione.
Non provare a eseguire il lavoro del compilatore: lasciatelo al compilatore. Il tuo compito è quello di scrivere codice che altri umani possano facilmente comprendere, ad esempio codice chiaro. Aggiornamenti multipli e l'uso inutile di operatori con effetti collaterali non è compatibile con quello.
Suggerimento: cospargere const
quasi ovunque possibile.
Ciò limita le possibili modifiche di stato che un lettore deve prendere in considerazione.
fonte
2012-06-25 17:55:16
Bene, tuttavia, è una limitazione del linguaggio design o piuttosto una limitazione della macchina (cpu), comune a qualsiasi lingua? –
'errore: l'operazione su 'a' potrebbe non essere definita [-Werror = sequence-point]' - Ah, grazie, compilatore a portata di mano. – chris
Attiva tutti gli avvisi e compila e tratta gli avvisi come errori logici e non dovrai preoccuparti di questo: '-Werror -Wall -Wextra -ansi -pedantic' –