Ответ 1
Оператор запятой имеет более низкий приоритет, чем присвоение, поэтому они анализируются как
(bIsTRUE = true), false, true;
(bIsFALSE = (true, false)), true;
(bIsAlsoTRUE = ((true, false), true));
Оператор запятой не замыкается. Он оценивает свой левый операнд, игнорирует результат, затем оценивает его правый операнд.
bIsTRUE
true
, потому что правый операнд присваивания true
.
bIsFALSE
false
, потому что (true, false)
оценивает true
, игнорирует результат, затем оценивает и дает false
.
bIsAlsoTRUE
равен true
, потому что ((true, false), true)
оценивает (true, false)
, игнорирует результат, затем оценивает и дает true
.