Фигурные скобки в конструкции if...then...else в С++

Разработка программ на пес его знает на чем
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Фигурные скобки в конструкции if...then...else в С++

Сообщение kreator »

Народ, кто пользуется С или С++, можно эту конструкцию написать без фигурных скобок? Типа вот так:

Код: Выделить всё

  result = 0 ;
  count0 = 2 ;
  if (count0>10)
    if (count0=15)
      result = 2 ;
  else
    result = 1 ;
We are hard at work… for you. :)
PavelNK
Старожил
Сообщения: 262
Зарегистрирован: 15 Март 2011, 8:02

Фигурные скобки в конструкции if...then...else в С++

Сообщение PavelNK »

я писал, вроде работает

int ret = FALSE;

if (!*que)
ret = TRUE;

return ret;
kreator
✯ Ветеран ✯
Сообщения: 4958
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Фигурные скобки в конструкции if...then...else в С++

Сообщение kreator »

Дело в том, что в конструкции, которую я привел, else оказывается ко второму if. И без пол-литра не разобраться. У Clarion'а нет такого синтаксиса и во многих других языках тоже. Получается, что в С (С++) осталась, на мой взгляд, такая стрёмная вещь :? .
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3130
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Фигурные скобки в конструкции if...then...else в С++

Сообщение Дед Пахом »

Поосторожнее с C++, вот это условие всегда вернёт true:
kreator писал(а): if (count0=15)
С уважением, ДП
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Фигурные скобки в конструкции if...then...else в С++

Сообщение Yufil »

Да, надо писать два знака '='. Видел даже рекомендацию в условиях писать if (15==count0) .

Кстати, современные IDE видят эту ошибку (набираю программу на Javascript в WebStorm или Pycharm - сразу показывает)
Насчёт "многих других языков" - практически всё потомство C (в том числе PHP, Java, C#, Javascript) так работает, сильно подозреваю, что это процентов 90-95 кода.
Наоборот, Clarion - один из немногих языков с явным закрытием блоков, скорее всего это заимствовано из Modula-2
Вот пролистал несколько книжек по сегодняшним языкам - языки D, Go, Dart, Scala, Rust - все аналогичны C в этом плане,
Julia имеет обязательный end в конце.
В Python всё зависит от правильной лесенки выравнивания. Если хочешь, чтобы else относилась ко второму If - надо её сдвинуть вправо :D
Ответить