Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
phil
Зарегистрирован: 24.08.2003 Сообщения: 32 Откуда: Санкт-Петербург
|
Добавлено: Ср Авг 27 2003 10:05 Заголовок сообщения: небольшой вопросик по C-шке |
|
|
Привет всем!
Допустим имеется выражение
... while (( expr1 ) && ( expr2 )) { do_something(); } ...
Вопрос: если expr1 равно false будет ли вычисляться expr2? Можно представить что expr1 - проверка указателя на NULL, а expr2 - обращение к полю структуры на которую он указывает.
Спасибо. |
|
Вернуться к началу |
|
|
_Van
Зарегистрирован: 27.08.2003 Сообщения: 3
|
Добавлено: Ср Авг 27 2003 10:50 Заголовок сообщения: Re: небольшой вопросик по C-шке |
|
|
Нет, expr2 выполняться не будет. Если компилятор видит ex1 && ex2 && ex3 && ex4 и при этом хоть один из ex == false, то остальные даже не проверяются и не выполняются... |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Ср Авг 27 2003 20:11 Заголовок сообщения: 2_Van Поправка (+) |
|
|
>>Нет, expr2 выполняться не будет. >>Если компилятор видит ex1 && ex2 && ex3 && ex4 и при этом хоть один из ex == false, >>то остальные даже не проверяются и не выполняются...
А как компилятор узнает, что один ex == false? Я бы сказал корректнее: Компилятор проверяет expr'ы до тех пор, пока не встретит false. Причем есть определенный порядок проверки (вот только я точно не помню слева на право или справо на лево). Нужно обратиться к документациям. |
|
Вернуться к началу |
|
|
_Van
Зарегистрирован: 27.08.2003 Сообщения: 3
|
Добавлено: Чт Авг 28 2003 13:36 Заголовок сообщения: Re: 2_Van Поправка (+) |
|
|
В любых версиях С++, компилятор (при обнаружение коньюктивного выражения (&&))проверяет слева на право... |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Сб Авг 30 2003 08:05 Заголовок сообщения: Complete Boolean Evaluation |
|
|
Есть такая опция в компиляторах "complete boolean evaluation". По умолчанию она выключена и вы все правы. Но если её включить будут выполняться ВСЕ элементы выражения. |
|
Вернуться к началу |
|
|
|