Оператор запятой имеет более низкий приоритет, чем присваивание, поэтому они анализируются как
(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
.