2013-09-02 1 views
3

?: 연산자를 출력 스트림에 통합하려고합니다. 여기에 코드출력 스트림에서`? :`사용

bool a; 
for (int i = 0; i < 10; i++) { 
    a = rand() % 2; 
    std::cout << "a= " << (a) ? "true\n" : "false\n"; 
} 

하지만 출력이 문제가

a= 1a= 0a= 1a= 1a= 1a= 1a= 0a= 0a= 1a= 1 

, 아니 새로운 라인문자열 없습니다. 어떻게해야합니까?

+1

사이에 괄호를 넣으십시오. '(a? "사실 \ n": "거짓 \ n")'. – Rapptz

+0

이것은 문제가 아니지만'(a)'의 괄호는 필요하지 않습니다. –

답변

6

출력 연산자 <<이 3 진수 연산자 ?:보다 더 높은 precedence을 가지기 때문입니다. 컴파일러 것이

당신은 명시 적으로 올바른 위치에 괄호를 둘 필요가
(std::cout << "a= " << (a)) ? "true\n" : "false\n"; 

같은 그래서 :

std::cout << "a= " << (a ? "true\n" : "false\n"); 

또는 a로 이미 bool 당신이 인쇄에 std::boolalpha를 사용할 수있다 직접 :

std::cout << "a= " << std::boolalpha << a << '\n'; 
+0

'a'는 이미'bool'이고, 캐스트는 중복됩니다. – MSalters

+0

@MSalters 당신 말이 맞아요, 그것의 임무가 날 버렸어요. –

0

일부 파

std::cout << "a= " << ((a) ? "true\n" : "false\n"); 
관련 문제