Вот точно по стандарту && и || вычисляются с лева на право и если результат можно определить то вторая часть не вычисляется!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
KRS
01 марта 2005 г. 12:49
В ответ на:
А учитываете ли Вы, что логическое выражение не вычисляется полностью, если результат выражения определяется по его части (при а==0)?
отправлено Палыч 01 марта 2005 г. 12:47
Составить ответ
|||
Конференция
|||
Архив
Ответы
а покажите стандарт. по рекомендациям (из умных книжек) вроде бы на это полагаться нельзя
—
yes
(01.03.2005 13:05, 28 байт)
да вот например по MISRA нельзя. Но это протсо правила которые защищают от своих логических ошибок,а компилер должен по стандарту компилировать а там четко описано.
—
KRS
(01.03.2005 13:27,
пустое
)
народ, я в шоке. У вас это вообще компилируется ?????
—
DASM
(01.03.2005 13:06,
пустое
)
if(a&&(func(),b)){;}
—
радиолюбитель без лицензии
(01.03.2005 13:09,
пустое
)
да хоть запятая, хоть точка с запятой - некорректно это
—
DASM
(01.03.2005 13:12,
пустое
)
так Ви таки спрашуваите о компилируемости или о корректности?
—
радиолюбитель без лицензии
(01.03.2005 13:44,
пустое
,
ссылка
)
в этой сказке нет порядка, там ошибка, опечатка (с)
—
радиолюбитель без лицензии
(01.03.2005 13:11,
пустое
)
да вам вообще никто && с void фунцкией еще при компиляции делать не даст
—
DASM
(01.03.2005 12:59,
пустое
)
там && с b, а func() вызывается попутно
—
радиолюбитель без лицензии
(01.03.2005 13:03,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru