C ++, троичный оператор, std :: cout - PullRequest
11 голосов
/ 07 июля 2011

Как написать следующее условие с помощью троичного оператора, используя C ++

int condition1, condition2, condition3;
int / double result; //int or double
....
std::cout << ( condition1: result1 : "Error" ) 
          << ( condition2: result2 : "Error" )
          << ( condition3: result3 : "Error")...;

Ответы [ 2 ]

16 голосов
/ 07 июля 2011

Зависит от типа result1, result2 и т. Д.

expressionC ? expression1 : expression2 не действует для всех типов expression1 и expression2. Грубо говоря, они должны быть конвертируемыми в общий тип (точные правила и исключения можно прочитать в стандарте). Теперь, если result s строки, то вы делаете это так:

std::cout << ( condition1 ? result1 : "Error" ) 
                         ^^^
          << ( condition2 ? result2 : "Error") 
                         ^^^
          << etc.

Но если результаты целочисленные, например, вы не можете это сделать.

НТН

1 голос
/ 07 июля 2011

Попробуйте использовать condition ? true-value : false-value.

...