2011-07-07 38 views
8

Cómo escribir la siguiente condición con un operador ternario usando C++C++, operador ternario, std :: cout

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

¿Qué es 'result1' etc.? –

+0

operador ternario es 'cond? exp1: exp2'. Usaste '::' ¡Aparte de eso, no creo que haya nada más que decir! –

+0

@Diff: Oh sí, hay, ver mi respuesta –

Respuesta

13

depende de qué tipo es result1, result2 etc.

expressionC ? expression1 : expression2 no es válida para todos los tipos de expression1 y expression2. Deben necesariamente ser convertibles a un tipo común, en términos generales (las reglas exactas y las excepciones se pueden leer en el estándar). Ahora bien, si result s son cadenas, entonces lo haces de esta manera:

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

Pero si los resultados son números enteros, por ejemplo, puede no hacerlo.

HTH

+0

¿Y qué pasa con la conversión de resultado a char? – Johnas

+1

@Johnas: no, eso no funcionará. '" Error "' es del tipo 'const char [6]'. 'char' y' const char [6] 'son diferentes tipos incompatibles –

+0

Gracias por su ayuda y comentarios. – Johnas

1

Trate de usar condition ? true-value : false-value.