Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 08.08.2018
Сообщений: 3

Почему операторы "if else" ставят в одну строку, к примеру: else if (BMI <=25)???

08.08.2018, 23:30. Показов 8541. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят почему операторы if else ставят в одну строку??? К примеру: else if (BMI <=25)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2018, 23:30
Ответы с готовыми решениями:

Почему запрос вернёт одну строку ?
Привет. Лазил тут по просторам. нашёл запрос. Запрос = Новый Запрос; Запрос.Текст = &quot;ВЫБРАТЬ ...

Почему в функции operator не ставят тип возвращаемого значения?
Добрый день! Учу С++ по книге Лафоре. Пример кода ниже. Стало интересно, почему в функции operator есть возвращение значения return. В...

Почему выводит еще одну строку, равную 0?
2. Дана целочисленная квадратная матрица. Определить: • сумму элементов в тех столбцах, которые не содержат отрицательных элементов; ...

44
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.08.2018, 23:34
ss120, просто так удобно
0
391 / 64 / 11
Регистрация: 06.08.2018
Сообщений: 202
08.08.2018, 23:38
я тоже из свежеиспеченных... , но, посмею предположить, что это то же самое как:

C++
1
2
3
4
5
6
if(..){  //этого if у вас нет
...
}
else{
   if(BMI<=25) ...
}
T.e. это как бы if вложенный в else...
Пусть более опытные поправят меня если это не так. (тоже любопытно)
2
0 / 0 / 0
Регистрация: 08.08.2018
Сообщений: 3
08.08.2018, 23:41  [ТС]
я просто этот момент не пойму,можно использовать один if? А не так как else if (BMI<=25)
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
08.08.2018, 23:47
Лучший ответ Сообщение было отмечено MrGluck как решение

Решение

Цитата Сообщение от Крашеная Посмотреть сообщение
что это то же самое как:
Да. В if, else, while, ..., может содержаться лишь одна инструкция, не более того.
Этой инструкцией может быть compound statement или, как его называют - block.
Блок может объединить несколько инструкций, поэтому, чтобы в if (и др.) можно было написать несколько инструкций применяют блок.
3
0 / 0 / 0
Регистрация: 01.04.2015
Сообщений: 20
09.08.2018, 00:06
C++
1
2
3
4
5
6
7
8
9
................................
if(выражение1)////////////
{
   инструкция1;
}                          Единый блок
else if(выражение2)
{
   инструкция2;
}///////////////////////////
В первом примере если выражение равно true, то выполняется инструкция1. Затем программа пропускает выражение2 и выполняет ту инструкцию, которая идет за блоком if. Если выражение равно false, то инструкция1 пропускается и выполняется2. Когда выполнение выражение2 завершится, программа выполнит ту инструкцию, которая следует сразу за блоком if.
C++
1
2
3
4
5
6
7
8
9
10
11
/////////////////////////////////////////////////
 
if(выражение1)
{
   инструкция1;
}
 
if(выражение2)
{
   инструкция2;
}
А во втором примере компилятор проверит все условия даже если первое условие true.
0
0 / 0 / 0
Регистрация: 08.08.2018
Сообщений: 3
09.08.2018, 00:15  [ТС]
Ну уже как- то понятно,надо потренироваться..
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
09.08.2018, 04:13
Конструкция if или, как было бы правильно сказать, — «The if statement» имеет следующий синтаксис :
C++
1
if ( init-statement condition ) statement
или
C++
1
if ( init-statement condition ) statement else statement
Цитата Сообщение от ss120 Посмотреть сообщение
почему операторы if else ставят в одну строку???
Полагаю, имелось в виду else if и почему оно работает.
В данном случае рассматриваем второй случай ( пример кода с подконструкцией else ). Как видно из примера, подконструкция else ожидает statement. Так как конструкция if сама является statement'ом, то мы можем подставить ее. Вот и все Это просто возможность языка.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
09.08.2018, 07:20
NOILAK, первый код в посте #6 эквивалентен

C++
1
2
3
4
5
6
7
8
9
10
11
if(выражение1)////////////
{
   инструкция1;
}                          Единый блок
else
{
   if(выражение2)
   {
      инструкция2;
   }
}
соответственно
C++
1
2
3
4
if() ...
else if() ...
else if() ...
else ...
эквивалентен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if()
{}
else
{
  if()
  {}
  else
  {
     if()
     {}
     else
     {}
  }
}
0
0 / 0 / 0
Регистрация: 09.08.2018
Сообщений: 19
09.08.2018, 11:06
Короче если только одна инструкция то {} писать не обязательно.
Так можно:
C++
1
if (a>b) printf("a>b");
А так нельзя
C++
1
if (a>b) printf("a"); printf(">"); printf("b");
Во втором примере, если a>b, то на экране напечатает "a", а остальное напечатает и так и так. Чтобы сделать второй пример рабочим,
C++
1
2
if (a>b) {
printf("a"); printf(">"); printf("b");}
Помещают в скобки. А так помещать не обязательно.
0
5 / 5 / 1
Регистрация: 20.07.2018
Сообщений: 24
09.08.2018, 13:26
При использовании одни только if-условий,будут выполняться все проверки без исключения.Если же использовать else-if -- древо условий будет проверяться,пока выражение не будет истинным,так же это уменьшит количество выполняемых операций.

C++
1
2
3
4
5
if(statement) {
//...
} else if(statement2) { //Будет выполнено,только,если предыдущее условие было ложно
//...
}
C++
1
2
3
4
5
6
if(statement) {
//...
}
if(statement2) { //Будет выполняться каждый раз,даже если это не нужно
//...
}
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.08.2018, 14:07
Цитата Сообщение от GetCurrentD Посмотреть сообщение
А так нельзя
Зато можно так
C++
1
if (a>b) printf("a"), printf(">"), printf("b");
Терпеть не могу такой вид записи.
Тут используется comma operator. И некоторые ради того, чтобы не использовать scope, прибегают к таким конструкциям.
2
0 / 0 / 0
Регистрация: 09.08.2018
Сообщений: 19
09.08.2018, 20:16
MrGluck, не знал. Да наверное никто не знал.
Возьму себе на заметку
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
09.08.2018, 20:22
Цитата Сообщение от MrGluck Посмотреть сообщение
Тут используется comma operator
Мне вот всегда было интересно, можно ли в for объявить две переменных разного типа? Что-нибудь типа такого.

C++
1
for (int i = 1, double j = 2;;);
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
09.08.2018, 20:54
QuakerRUS, зачем? Более того совсем ещё недавно в ANSI Си в for нельзя было объявлять переменные вообще никакие и ни в каком количестве. Только инициализировать ранее объявленные
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
09.08.2018, 20:56
Kuzia domovenok, ну, например, чтобы не объявлять уровнем выше эту переменную. Чтобы ее время жизни было только в пределах цикла. Конечно это не так уж критично, так как это можно обойти иными способами, чуть более громоздкими, просто скорее любопытно.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
09.08.2018, 21:00
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Чтобы ее время жизни было только в пределах цикла.
сделай так
C++
1
2
3
{ double j = 2;
for (int i = 1;;);
}
Цитата Сообщение от QuakerRUS Посмотреть сообщение
Мне вот всегда было интересно, можно ли в for объявить две переменных разного типа?
насколько знаю- нельзя
1
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
09.08.2018, 21:02
Цитата Сообщение от ValeryS Посмотреть сообщение
сделай так
Это как раз один из более громоздких вариантов.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
09.08.2018, 21:03
Цитата Сообщение от QuakerRUS Посмотреть сообщение
из более громоздких вариантов.
громоздких это пару скобок поставить?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
09.08.2018, 21:08
ValeryS, пара скобок плюс лишняя табуляция. Можно и так сделать к примеру, но тоже не самый красивый вариант.

C++
1
2
3
4
5
struct S
{
    int i;
    double j;
};
C++
1
for (struct S s { 1, 2 };;);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2018, 21:08
Помогаю со студенческими работами здесь

Почему двумерный массив выводится в одну строку?
Подскажите, пожалуйста, двумерный квадратный массив так должен выводиться?? Вызываю в методе main как Diagonal();

C# XmlWriter пишет всё в одну строку. Почему?
Добрый день. Использую стандартный C# XmlWriter. Работает, но пишет всё в одну строку. Подскажите в чём дело? Где вставить...

Почему Memo выводит одну строку 6 раз подряд?
Уважаемые помогите ! Задолбался я. Гляньте кому не сложно. В потоке TCOMReadThread.execute в самом конце вызываю synchronize(outInfo);...

Генерирую сайт на php - получаю код html в одну строку. Почему?
Всем привет! собсно непонятно: есть генератор сайта на php подставляю html шаблон с прописанными макросами (взять текст из файла и...

не могу добавить еще одну станицу по примеру
создаю галерею на сайте http://expertdk.ru/wedding/demo/ через плагин Gamma Gallery https://habrahabr.ru/post/159087/ нужно добавить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru