Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как записать тернарное выражение для одного резуль, тата 
V
    Опции темы
andrew_121
Дата 25.2.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



вот в чем вопрос.
каким образом можно записать тернарное выражение для единственного результата?
поясню:
Код

результат = (если истина) ? (возвращаем это) : (иначе это)

/** а нужно что-то типа */
результат = (если истина) ? (возвращаем это)

такое возможно без функций-заглушек?

Это сообщение отредактировал(а) andrew_121 - 25.2.2010, 18:17


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
InvalidProperty
Дата 25.2.2010, 18:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



а зачем??? чем не подходит
Код

if(если истина) {выполняем это}



--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
andrew_121
Дата 25.2.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



InvalidProperty, запутался.
я имел ввиду другое. отредактировал первый пост.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GoldFinch
Дата 25.2.2010, 18:24 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



x = cond ? y : x ;
PM MAIL ICQ   Вверх
andrew_121
Дата 25.2.2010, 18:30 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(GoldFinch @  25.2.2010,  18:24 Найти цитируемый пост)
x = cond ? y : x ; 

 smile 

в моем случае, "возвращаем это"(Х) - это результат некой функции.

Это сообщение отредактировал(а) andrew_121 - 25.2.2010, 18:30


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GoldFinch
Дата 25.2.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



x = cond ? foo(y) : x ; 
PM MAIL ICQ   Вверх
InvalidProperty
Дата 26.2.2010, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



и все-таки... до сих пор не могу понять, а чем же вариант
Код

if(something) my_something = another_something

не устраивает?

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


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
xvr
Дата 26.2.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(andrew_121 @ 25.2.2010,  18:03)
вот в чем вопрос.
каким образом можно записать тернарное выражение для единственного результата?
поясню:
Код

результат = (если истина) ? (возвращаем это) : (иначе это)

/** а нужно что-то типа */
результат = (если истина) ? (возвращаем это)


И что же должно попасть в результат если не истина?

PM MAIL   Вверх
andrew_121
Дата 26.2.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



всем спасибо.
вопрос возник чисто из теоретического любопытства.



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
mes
Дата 26.2.2010, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(andrew_121 @  26.2.2010,  16:13 Найти цитируемый пост)
вопрос возник чисто из теоретического любопытства.

а наше любопытство не изволите утолить ?

Цитата(xvr @  26.2.2010,  14:06 Найти цитируемый пост)
И что же должно попасть в результат если не истина?


P.S. или это любопытство возникло в следствии столкновения с шарповым  оператором_??   ? 

Это сообщение отредактировал(а) mes - 26.2.2010, 17:52


--------------------
PM MAIL WWW   Вверх
andrew_121
Дата 26.2.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(mes @  26.2.2010,  17:50 Найти цитируемый пост)
или это любопытство возникло в следствии столкновения с шарповым  оператором_??   ?

я не знаком с шарпом.


Цитата(mes @  26.2.2010,  17:50 Найти цитируемый пост)
а наше любопытство не изволите утолить ?

в общем есть массив булевых значений - 42 значения.
в зависимости от состояния флага, нужно выполнить определенную функцию(функций меньше, повторяются).
писать 42 if() {} не хотелось, т.к. мне показалось с помощью тернарных выражений запись получится более понятной.
сделал так:
Код

static void null_function() {}
...
(expr) ? really_function() : null_function();


всем спасибо.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
xvr
Дата 26.2.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(andrew_121 @ 26.2.2010,  18:29)
в общем есть массив булевых значений - 42 значения.
в зависимости от состояния флага, нужно выполнить определенную функцию(функций меньше, повторяются).

Ясно
Цитата

писать 42 if() {} не хотелось, т.к. мне показалось с помощью тернарных выражений запись получится более понятной.
Скорее наоборот. 42 if'а будут понятнее
Цитата

сделал так:
Можно покороче
Код

(expr) ? really_function() : 0;
really_function должна возвращать int, либо так
Код

(expr) ? really_function() : (void)0;
если really_function возвращает void

Но в любом случае это изврат - 
Код

if (expr) really_function();
смотрится и естественнее и короче.


PM MAIL   Вверх
mes
Дата 26.2.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(andrew_121 @  26.2.2010,  17:29 Найти цитируемый пост)
в общем есть массив- 42 значения.

Цитата(andrew_121 @  26.2.2010,  17:29 Найти цитируемый пост)
писать 42 if() {} не хотелось,

чем цикл то не устроил ? 
если из за того что для каждого значения своя функция, то что мешает отразить их на память ?
если вдруг не массив а нечто другое, то тоже есть решения..но для совета надо представлять Вашу задачу ясней smile

в общем такое ощущение, что ищете выход пытаясь пролезть в форточку, и забыли посмотреть, что дверь нараспашку.





--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1317 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.