2011-07-07 12 views
8

Jak napisać następujący warunek z operatorem trójargumentowy używając C++C++, operator trójskładnikowych, std :: cout

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

Co to jest 'result1' itp? –

+0

operator potrójny to "cond? exp1: exp2'. Użyłeś '::' Poza tym, nie sądzę, że jest coś jeszcze do powiedzenia! –

+0

@Diff: O tak, jest, zobacz moją odpowiedź –

Odpowiedz

13

Zależy jakiego typu jest result1, result2 itp

expressionC ? expression1 : expression2 nie jest ważna dla wszystkich rodzajów expression1 i expression2. Muszą one z konieczności być wymienialne na typ powszechny, z grubsza rzecz biorąc (dokładne reguły i wyjątki można odczytać w standardzie). Teraz, jeśli result s są ciągami, a następnie zrobić to tak:

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

Ale jeśli wyniki są liczbami całkowitymi, na przykład, nie można tego zrobić.

HTH

+0

A co z konwersją wyniku na char? – Johnas

+1

@ John: nie, to nie wystarczy. '" Błąd "' jest typu 'const char [6]'. 'char' i' const char [6] 'są różnymi niekompatybilnymi typami –

+0

Dzięki za pomoc i komentarze. – Johnas

1

spróbuj condition ? true-value : false-value.