Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: if-if-else
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
k155la3
Есть конструкция вида
Код
if( AAA )
   if( BBB)
       Var1 = f1(...);
   else
       Var1 = f2(...);

Код работает правильно, как и ожидается.

Но IAR выдает предупреждение касаемо сомнительности принадлежности else
к первому или второму if.

(?) Это "бдение" компилятора / подсказка разработчику на возможную логическую ошибку
или в принципе неправильное/неграмотное построение конструкции на if ?
(надо использовать { . . . })
Сергей Борщ
QUOTE (k155la3 @ Apr 15 2017, 13:12) *
Это "бдение" компилятора / подсказка разработчику на возможную логическую ошибку
Да. Иногда оказывается полезным (if(a = 2) вместо if(a == 2)). gcc иногда даже на форматирование внимание обращает, вот на такой код может предупреждение выдать:
CODE
if(...)
    expression 1;
    expression 2;

k155la3
Цитата(Сергей Борщ @ Apr 15 2017, 13:25) *
Да. .....

Спасибо за инф.
Своим коллегам часто повторяю "компилятор умнее нас" sm.gif

Baser
Это именно предупреждение, иначе была бы ошибка.
Я лично никогда не видел, чтобы компилятор обращал внимание на форматирование,
всегда думал, что он сначала все переводит в одну длинную строку.
A тут считается что возможна ошибка, поскольку программисты частенько выделяют логику форматированием, а про скобки забывают.

Код
if( AAA ) {
   if( BBB)
       Var1 = f1(...);
   else
       Var1 = f2(...); }

Код
if( AAA ) {
   if( BBB)
       Var1 = f1(...); }
   else
       Var1 = f2(...);

Первый вариант равнозначен вашему, а второй отличается.
Скобки лучше ставить явно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.