Страница 1 из 1

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

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

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

  result = 0 ;
  count0 = 2 ;
  if (count0>10)
    if (count0=15)
      result = 2 ;
  else
    result = 1 ;

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

Добавлено: 03 Июнь 2016, 16:11
PavelNK
я писал, вроде работает

int ret = FALSE;

if (!*que)
ret = TRUE;

return ret;

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

Добавлено: 03 Июнь 2016, 16:25
kreator
Дело в том, что в конструкции, которую я привел, else оказывается ко второму if. И без пол-литра не разобраться. У Clarion'а нет такого синтаксиса и во многих других языках тоже. Получается, что в С (С++) осталась, на мой взгляд, такая стрёмная вещь :? .

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

Добавлено: 03 Июнь 2016, 16:29
Дед Пахом
Поосторожнее с C++, вот это условие всегда вернёт true:
kreator писал(а): if (count0=15)

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

Добавлено: 03 Июнь 2016, 17:12
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