http://en.wikipedia.org/wiki/Comma_operator:
Nel linguaggi di programmazione C e C++, l'operatore virgola (rappresentato dal token ,
) è un operatore binario che valuta la sua prima operando e scarta il risultato, e quindi valuta la secondo operando e restituisce questo valore (e digita).
Nel tuo primo if
:
if (a, b)
a
viene valutata prima e scartati, b
viene valutata secondo e restituito come 0. Quindi questa condizione è falsa.
Nella tua seconda if
:
if (b, a)
b
viene valutata prima e scartati, a
viene valutata secondo e restituito come 1. Quindi questa condizione è vera.
Se ci sono più di due operandi, verrà restituita l'ultima espressione.
Se si desidera entrambe le condizioni per essere vero, è necessario utilizzare le && operator:
if (a && b)
si sa che sta usando l'operatore virgola nella condizione, ma dovete chiedere? –
È sufficiente aggiungere un punto di interruzione alla prima istruzione ed eseguire il programma riga per riga utilizzando F10 per visualizzare il flusso. – vish213
@DanielFischer So che la virgola agisce come un punto di sequenza nelle istruzioni ma non negli argomenti delle funzioni. Puoi dirmi se è un punto di sequenza all'interno di "se"? Mi sento intuitivamente ** sì **, ma vorrei che tu per confermare. –