C ++ условный оператор - PullRequest
8 голосов
/ 27 июля 2010

Я однажды видел оператор -wired- в C ++, который присваивает значение, если оно больше ..
это была комбинация ?, < и =

например. пусть х = значение, если значение больше, чем х

I не означает x=(x<value)x:value

Это был какой-то x<?=value

Но я не могу вспомнить это точно, и не могу найти это онлайн ... Может кто-нибудь напомнить мне об этом?

Спасибо

Ответы [ 7 ]

11 голосов
/ 27 июля 2010

Нет оператора, который присваивает переменные на основе их относительных значений.

Однако есть оператор?:

x = value > x ? value : x;

Если вы читаете это вслух слева направо, это имеет смысл.

8 голосов
/ 27 июля 2010

gcc имеет - по крайней мере в версии 3.3.6!- специфичное для gcc расширение языка, предоставляющее специализированные операторы для реализации min и max.Возможно, это то, о чем вы думаете?

Минимальные и максимальные операторы в C ++

У меня нет удобного gcc для тестирования, но он можетФорма обновления тоже.

4 голосов
/ 28 июля 2010

Как это:

(x<value) || (x=value)
1 голос
/ 27 июля 2010

Вы думаете о троичном операторе ?

result = a > b ? x : y;
0 голосов
/ 28 июля 2010

Я подозреваю, что вы думаете о gcc расширении 1 , которое позволяет вам пропустить средний операнд для условного оператора, поэтому (например):

a = b ? b : c;

можно записать как:

a = b ?: c;

1 Несмотря на «2.95.3» в URL, я не знаю о более новой версии связанной страницы. Если кто-то есть, пожалуйста, не стесняйтесь указывать (или редактировать).

0 голосов
/ 27 июля 2010

это более удобная версия оператора if, который используется для присваивания

int x = (some bool) ? trueval : falseval;

Это примерно то, что означает, что при вычислении bool он получает trueval или falseval в зависимости от результата,это проще, чем сказать

int x;
if (someval)
    x = trueval;
else
    x = falseval;
0 голосов
/ 27 июля 2010
x = x < value ? 0 : 1;

Эта функция устанавливает x в 0, это x <значение, в противном случае 1. </p>

...