Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

&& проверка условий

bool a1,a2,a3,a4,...; a1=false; while (a1 && a2 && a3 && a4 && ...) {...}
Будут ли в цикле проверяться условия a2,a3,a4,... или проверка завершится сразу после проверки a1?


Ответ

Проверка завершится на первом операнде. Это гарантируется стандартом:
&& guarantees left-to-right evaluation: the second operand is not evaluated if the first operand is false.
в вольном переводе
Для оператора && гарантируется вычисление слева-направо: второй операнд не вычисляется, если первый равен false
Аналогично и для оператора || - если первый операнд - true, вычисление второго не производистя.
Это правило НЕ применяется для побитовых & и |
Так же не выполняется для перегруженных операторов &&, || (в стандарте не нашел)

Комментариев нет:

Отправить комментарий