Вход на сайт
VS2013 C++11, && последовательность
318 просмотров
Перейти к просмотру всей ветки
Последний раз изменено 26.08.16 16:48 (anly)
Раньше (уже не помню почему) я думал что последовательность вычислений операндов в логическом выражении слева на право, причем правая часть вообще может быть не вычислена если результат и так ясен из левой части.
Напр.
if (AA && BB){...} // BB не нужно вычислять если AA == false
Но сегодня неожиданно наткнулся что я не прав!
В оригинальном коде в качестве AA была функция возвращающая bool, а в качестве BB - просто сравнение.
Для своих дебаг-целей я заменил возвращаемое значение функции с bool на класс, который однако имеет операторы члены приведения к bool и &&.
В этом случае оказалось что BB вычисляется первым! А в этом старом коде последовательность важна.
Разве последовательность не стандартизирована?
Проклят нарушающий межи ближнего своего (Втор.27:17)