tua espressione bool bRet = (pData, pOutFilename);
è un'espressione valida, ed è equivalente alla espressione bool bRet = pOutFilename;
In bool bRet = (pData, pOutFilename);
, prima espressione pData
viene valutata, poi la seconda espressione pOutFilename
viene valutata, allora il valore di seconda espressione è assegnato al bRet
(questo è il modo in cui l'operatore ,
lavora da sinistra a destra).
Leggi: Comma Operator: ,
L'operatore virgola ,
ha left-to-right associativity
. Due espressioni separate da una virgola vengono valutate da sinistra a destra. L'operando a sinistra è sempre valutato e tutti gli effetti collaterali sono completati prima che venga valutato l'operando di destra .
Per comprendere l'importanza della parentesi ()
nell'espressione, considerare il mio esempio di seguito. Osservare l'output in questo esempio (ho C esempio):
int main() {
int i = 10, b = 20, c= 30;
i = b, c; // i = b
printf("%i\n", i);
i = (b, c); // i = c
printf("%i\n", i);
}
uscita:
20
30
Per comprendere l'output: look at precedence table,
hanno bassa priorità rispetto =
. Nella tua espressione hai sovrascritto la precedenza usando le parentesi.
fonte
2013-07-22 10:29:26
Controllare l'operatore virgola.Come per pData; bool bRet = pOutFilename; ' –