Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
#1

Является ли тернарный оператор оператором сравнения? - C++

08.08.2014, 22:37. Просмотров 1227. Ответов 30
Метки нет (Все метки)

Является ли тернарный оператор оператором сравнения? Подскажите пожалуста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2014, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Является ли тернарный оператор оператором сравнения? (C++):

Тернарный оператор vs if/else - C++
Зачем? Ведь, так элегантнее. Начало http://www.cyberforum.ru/cpp-beginners/thread718192.html

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

Альтернатива if (.) {.} (тернарный оператор) - C++
блин запамятовал как это делается пишут вместо стандартной формы что то типа y < x : x = m напомните плиз как это называется, какие там...

Засунуть в тернарный оператор - C++
Помогите засунуть выражение if ( (i < 0 || j < 0) || (i >= ROW || j >= COL) || (i == oi && j == oj)) continue; else if (arr)...

Шахматы(заменить тернарный оператор) на if else - C++
#include <iostream> #include <Windows.h> using namespace std; void main() { int h, w, i, j; cout << "Введите...

Тернарный оператор: возврат значения - C++
Приветствую. При компиляции ниже приведенного кода bool MyFunc() { bool flag = false; // .... некоторые действия // .......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jewbacabra
Эксперт PHP
2414 / 2010 / 760
Регистрация: 24.04.2014
Сообщений: 5,888
08.08.2014, 22:42 #2
mmeexx, нет
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 22:51 #3
Скорее - краткая форма условного оператора:
C++
1
2
3
4
if(a>b) a += 5;
else a+=6;
 
a+=(a>b)?5:6;
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
08.08.2014, 22:54  [ТС] #4
То есть при условии "не использовать операторы сравнения" сранить два числа, то можно использовать тернарный оператор?
Etien
21 / 21 / 0
Регистрация: 26.01.2014
Сообщений: 182
08.08.2014, 23:05 #5
Тринарный оператор - одна из "находок" С. Хотя иногда использую, но не потому что без него нельзя, а просто чтобы совсем не забыть что такое вот есть. Его необходимость сам внятно объяснить не могу и ни от кого внятного объяснения не слышал. А работаю с С - уже запамятовал с какого года.
Помните, что он есть, и не заморачивайтесь особо.

Всегда Ваш - Etien.
DrOffset
7095 / 4236 / 951
Регистрация: 30.01.2014
Сообщений: 7,012
08.08.2014, 23:20 #6
Цитата Сообщение от Etien Посмотреть сообщение
Его необходимость сам внятно объяснить не могу и ни от кого внятного объяснения не слышал.
Ну, например, ссылку без него не иницализировать по условию:
C++
1
int & ref = isA ? foo() : bar();
А вот так нельзя:
C++
1
2
3
4
5
int  & ref;
if(isA)
   ref = foo();
else
   ref = bar();
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
08.08.2014, 23:23 #7
mmeexx, имхо нет, т.к. внутри тернарного оператора будет сравнение:
C++
1
a>b?"yes":"no
DrOffset
7095 / 4236 / 951
Регистрация: 30.01.2014
Сообщений: 7,012
08.08.2014, 23:23 #8
Etien, а еще он позволяет избежать копипаста, например в таком случае:
C++
1
bar(a, b, c, isA ? foo1() : foo2());
против
C++
1
2
3
4
if(isA)
    bar(a, b, c, foo1());
else
    bar(a, b, c, foo2());
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
08.08.2014, 23:42 #9
Цитата Сообщение от mmeexx Посмотреть сообщение
тернарный оператор оператором сравнения?
Conditional operator, conditional-expression
Etien
21 / 21 / 0
Регистрация: 26.01.2014
Сообщений: 182
08.08.2014, 23:54 #10
Нет, я конечно согласен, что есть случаи, когда наличие тринарного удобнее. Сам иногда использую. Но нет случаев, когда какое-либо ветвление можно сделать только им и ни чем иным. Ну может быть некоторая потеря в элегантности. Опираюсь конечно на опыт собственный. Возможно он характерен только для моих задач.

Всегда Ваш - Etien.
DrOffset
7095 / 4236 / 951
Регистрация: 30.01.2014
Сообщений: 7,012
09.08.2014, 00:44 #11
Цитата Сообщение от Etien Посмотреть сообщение
Но нет случаев, когда какое-либо ветвление можно сделать только им и ни чем иным.
Ну вот инициализация ссылки чем не пример?
Etien
21 / 21 / 0
Регистрация: 26.01.2014
Сообщений: 182
09.08.2014, 00:56 #12
Dидимо я сделал бы не через инициализацию ссылки, а через указатель на функцию.
Как уже говорил - нет задач, которые можно решить только им. Остальное - дело вкуса.
Всегда Ваш - Etien.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
09.08.2014, 01:04 #13
сравнить на равенство можно так:
C++
1
2
3
4
int a, b;
//что-то им присваивается
if(abs(a-b)) cout<<"a is not equal b"<<endl;
else cout<<"a is equal b";
DrOffset
7095 / 4236 / 951
Регистрация: 30.01.2014
Сообщений: 7,012
09.08.2014, 01:07 #14
Цитата Сообщение от Etien Посмотреть сообщение
Как уже говорил - нет задач, которые можно решить только им.
Так про любое средство языка можно сказать. Чем так оператор тернарный выделился?

Добавлено через 59 секунд
Цитата Сообщение от Etien Посмотреть сообщение
Dидимо я сделал бы не через инициализацию ссылки, а через указатель на функцию.
Иногда так сделать нельзя, т.к. концепция использования может диктоваться, например, библиотекой.
Etien
21 / 21 / 0
Регистрация: 26.01.2014
Сообщений: 182
09.08.2014, 01:42 #15
Без сомнения - можно. Первичны только коды процессора. Даже Assembler вторичен.
Я не говорил, что не нравится. Скорее особой нужности не испытываю. И до сих пор как-то умудрялся жить почти без его использования. И жить вполне сносно. О чем и написал. Возможно есть какие-то ситуации, вроде приведенной Вами. Сам таких ситуаций я стараюсь не создавать, и пока бог миловал, мои задачи позволяют обходиться без. Возможно я при этом что-то и теряю.
А вкусы - вы любите коньяк с лимоном. Я водку и огурчик. При случае я и от коньяка не откажусь, как наверное и Вы от запотевшей стопочки.
Всегда Ваш - Etien.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2014, 01:42
Привет! Вот еще темы с ответами:

Как работает тернарный оператор - C++
Здравствуйте. Объясните, пожалуйста, что значит эта строка color = (color == 'W') ? 'B' : 'W';

Тернарный оператор и операторы безусловного перехода - C++
Здравствуйте, может кто-нибудь объяснить, почему не компилируется оператор ?, если в одной из последующих частей стоит break, return,...

Простая задачка про тернарный оператор - C++
Переписал с учебника простую задачку, однако на 10 и 12 строке показывает ошибки. Что тут не так? #include&lt;iostream&gt; #include&lt;cmath&gt; ...

Тернарный оператор и множество ошибок в коде - C++
Вот задание: И простой код: #include&lt;iostream&gt; using namespace std; int main() { int n,k; cin&gt;&gt;n; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.08.2014, 01:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru