Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

VS2013 C++11, && последовательность

26.08.16 16:33
VS2013 C++11, && последовательность
 
anly коренной житель
anly
Последний раз изменено 26.08.16 16:48 (anly)

Раньше (уже не помню почему) я думал что последовательность вычислений операндов в логическом выражении слева на право, причем правая часть вообще может быть не вычислена если результат и так ясен из левой части.

Напр.

if (AA && BB){...} // BB не нужно вычислять если AA == false

Но сегодня неожиданно наткнулся что я не прав!

В оригинальном коде в качестве AA была функция возвращающая bool, а в качестве BB - просто сравнение.

Для своих дебаг-целей я заменил возвращаемое значение функции с bool на класс, который однако имеет операторы члены приведения к bool и &&.

В этом случае оказалось что BB вычисляется первым! А в этом старом коде последовательность важна.


Разве последовательность не стандартизирована?

Проклят нарушающий межи ближнего своего (Втор.27:17)
 

Перейти на