Quelqu'un peut-il expliquer cet exemple de court-circuit d'opérateur de virgule C ++?
-
28-10-2019 - |
Question
Quelqu'un peut-il expliquer cet exemple de court-circuit d'opérateur virgule C ++?
bIsTRUE = true, false, true;
bIsFALSE = (true, false), true;
bIsAlsoTRUE = ((true, false), true);
La solution
L'opérateur virgule a une priorité inférieure à l'affectation, donc ceux-ci sont analysés comme
(bIsTRUE = true), false, true;
(bIsFALSE = (true, false)), true;
(bIsAlsoTRUE = ((true, false), true));
L'opérateur virgule ne court-circuite pas.Il évalue son opérande gauche, ignore le résultat, puis évalue son opérande droit.
bIsTRUE
est true
car l'opérande droit de l'affectation est true
.
bIsFALSE
est false
car (true, false)
évalue true
, ignore le résultat, puis évalue et donne false
.
bIsAlsoTRUE
est true
car ((true, false), true)
évalue (true, false)
, ignore le résultat, puis évalue et donne true
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow