Инициализация объявления
bool return_value = true == false &&
true == false &&
false ? (true == false) : true;
может быть эквивалентно переписана, как
bool return_value = ( true == false && true == false && false ) ? (true == false)
: true;
. В результате логическое выражение оценивается как ложное, а третье (assignmeny-выражение) равно возвращено true
.
Согласно грамматике C ++ условный оператор определяется как
conditional-expression:
logical-or-expression
logical-or-expression ? expression : assignment-expression
И это выражение
true == false && true == false && false
является логическим или -выражение, которое, в свою очередь, определяется в грамматике C ++, как
logical-or-expression:
logical-and-expression
logical-or-expression || logical-and-expression