Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233

Стоит ли использовать тернарный оператор, если всегда есть альтернативы в С ?

04.07.2013, 00:55. Показов 11900. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне вот интересно , что скажут люди о Тернарном операторе, которые уже на С++ программируют немало.
Насколько он удобен, много ли экономит пространство кода и стоит ли его применять сильно часто или же тернарный оператор у многих не приживается в дальнейшем.

Да не спорю придумали его наверное не зря, перед какими то задачи он может и удобен, но мне кажется что его используют мало людей
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.07.2013, 00:55
Ответы с готовыми решениями:

Оператор идентичности - когда стоит использовать?
Когда стоит использовать оператор проверки идентичности - ===? Стоит ли его всегда использовать для сравнения строк?

Оператор gets() не хочет выполняться, если перед ним стоит scanf
Всем привет !! Сталкнулся с такой проблемой что оператор gets() нехочет выполнять есле передним стоит scanf вот пример #include...

Как узнать есть ли фронтальная камера на устройстве и если есть, то использовать ее?
Собственно вопрос выше.

85
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
05.07.2013, 19:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение
false преобразуется в 0, а true в 1
причем если сделать так
C++
1
2
3
4
5
6
bool a=false;
a++;
a++;
a++;
a++;
int b=a;
b будет равно 1 (лично проверял)
инверсия всех бит по моему была давным давно у майкрософта с их типом BOOL который был не чем иным как int
сейчас вроде бы у них макросы
C++
1
2
#define FALSE 0
#define TRUE  1
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
05.07.2013, 19:48
Не-не! У Майкрософта BOOL - это #define BOOL int, а bool - это настоящий честный bool.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
05.07.2013, 21:05
Цитата Сообщение от CheshireCat Посмотреть сообщение
Не-не! У Майкрософта BOOL - это #define BOOL int,
ну а я про что?
Цитата Сообщение от ValeryS Посмотреть сообщение
майкрософта с их типом BOOL который был не чем иным как int
Добавлено через 59 минут
вот кусок из вики
В C++ тернарная условная операция имеет тот же синтаксис, что и в Си. Однако за счёт наличия разницы между инициализацией и присваиванием, бывают ситуации, когда операцию ?: нельзя заменить конструкцией if-then-else, как, например, в следующем случае:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main(int argc, char** argv)
{
    string name;
    ofstream fout;
    if (argc > 1 && argv[1])
    {
        name = argv[1];
        fout.open(name.c_str(), ios::out | ios::app);
    }
    ostream& sout = name.empty() ? cout : fout;
    return 0;
}
Здесь переменная sout инициализируется в момент объявления результатом работы тернарной операции. Подобного эффекта не удалось бы достичь простым присваиванием в том или ином случае.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.07.2013, 23:07
Цитата Сообщение от ValeryS Посмотреть сообщение
Однако за счёт наличия разницы между инициализацией и присваиванием, бывают ситуации, когда операцию ?: нельзя заменить конструкцией if-then-else, как, например, в следующем случае:
Разве можно всегда оператором заменить выражение? Выражение возвращает значение, а оператор if или switch нет. Когда это значение имеет значение, - нельзя.
И это имеет значение в данном примере. А инициализация, что в списке:
C++
1
2
3
SomeConstuctor(int init_var_)
:const_var(init_method(init_var_)), ...
{}
что в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ostream& foo( string is_empty, ostream& fstr_out){
if( is_empty.empty() ) return cout;
return fstr_out;
}
int main(int argc, char** argv)
{
    string name;
    ofstream fout;
    if (argc > 1 && argv[1])
    {
        name = argv[1];
        fout.open(name.c_str(), ios::out | ios::app);
    }
    ostream& sout = foo(name,  fout);
    return 0;
}
в принципе, действительно может быть без применения тринарного оператора
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
05.07.2013, 23:20
IGPIGP,
это все не ко мне это к википедии
я вообще мало пользуюсь им, но иногда без него шибко трудно
например вывести на экран двоичное представление числа
C++
1
2
for(int i=(sizeof(a)-1)*8;i>=0;i--)
 printf("%d",a&(1<<i)?1:0)
без тернарного пришлось бы огород городить
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.07.2013, 00:23
Цитата Сообщение от ;4811529
это все не ко мне это к википедии
ValeryS, я это и имел ввиду. Сам пользуюсь вики (как и все)) и люблю этот ресурс, но иногда они повторяют предрассудки и даже ошибки. Это нормально для такого большого явления.
А тренарник, удобная штука там где уместно.

Не по теме:

У индейцев Сиу есть легенда. В ней говорится, о тройной стреле которая быстрее молнии... Но подробностей уже не помню. Да и не нужно это у костра молодых воинов. :pardon:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2013, 00:23

Где стоит использовать bootstrap и стоит ли вообще использовать CSS фреймворки?
Здравствуйте. Лично я ужасаюсь ковырять стили, когда к сайту подключен bootstrap и мало понимаю, чем он хорош вообще. В данной теме я бы...

тернарный оператор
понимаю, что вопрос совсем детский, но все таки не могу понять в чем проблема... пример: $a=1; echo...

Тернарный оператор
pagesArray=; haveCover=(bitmapArr==undefined); var firstPage:Number=haveCover?1:0; //Что это? for(var...

Тернарный оператор
Изучая php наткнулся на такую вещь, как тернарный оператор. Увидел, что его запись намного проще обычной конструкции if-else. Но вопрос...

Тернарный оператор
Добрый день, как доказать, что нету тенарного оператора ? Я как понимаю, есть только тенарная операция, которая представляет...


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

Или воспользуйтесь поиском по форуму:
86
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru