реклама на сайте
подробности

 
 
> Очерёдность обработки условий оператора IF, Строго по очереди?
sonycman
сообщение Dec 18 2008, 18:19
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Вдруг вот задался вопросом, имеет ли право компилятор менять очерёдность проверки условий в строках, подобных такой:
Код
static    CTimer    tmrPowerOFF;

if (tmrPowerOFF.Running() && tmrPowerOFF) ...

то есть если вместо вызова Running() сначала будет обрабатываться bool ...
Просто тогда у меня результат будет совершенно неверный.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Dec 18 2008, 19:48
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Про С++ не скажу, нет под рукой стандарта, а С от 99-го года явно предписывает вычислять слева направо, и не вычислять второе выражение, если результат уже ясен.

Цитата
6.5.13 Logical AND operator
Syntax
1 logical-AND-expression:
inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

Constraints
2 Each of the operands shall have scalar type.
Semantics
3 The && operator shall yield 1 if both of its operands compare unequal to 0; otherwise, it
yields 0. The result has type int.
4 Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation;
there is a sequence point after the evaluation of the first operand. If the first operand
compares equal to 0, the second operand is not evaluated.


и аналогично для оператора или.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016