Per esempio, dopo aver utilizzatoUso incremento operatore ternario in C
int a = 5, b = 6;
x = (a < b) ? a++ : b++;
x ottiene il valore di a, che è 5, e un incremento a 6, che è previsto.
Quando uso
a = (a < b) ? a++ : b++;
Dopo questa linea, un fermo rimane 5.
Ma
a = (a++ < b++) ? a : b;
a è ora 6.
Perché sta succedendo e perché non è l'operatore di incremento eseguito nel primo caso?
EDIT: Giusto per chiarire, sto chiedendo perché questo accade quando sto usando queste linee separatamente, una per una, non tutte e tre nello stesso tempo.
Perché dovresti ** ** voler fare qualcosa del genere? –
Con gcc 4.9.3: 'a = (a chux
rilevanti: http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points –