2013-06-06 2 views
1

점검 경우에 나는이 줄을 읽고 나는 그것이 무엇을하는지 이해가 안 :는 조건 (COUT)를

if(cout<<X) //What does this mean? 
{ 
... 
} 
+3

그것은 cout << x가 할 것입니다. 단지 cout << x가 실패하면 무시할 수있는 조건으로 넘어 가지 않습니다. 어린 시절에 이런 구문을 사용하여 끝내지 않고 코드를 작성한다는 것을 기억합니다. ... 재미 있습니다. –

+1

여기에서 답을 확인하십시오 :) http://stackoverflow.com/questions/10987156/does-stdcout-have-a-return-value –

답변

6

그것은 스트림은 좋은 상태에 아직도 있는지 X가를 법원에 기록하고 확인합니다. 그것은

stream << value 결과 스트림에 대한 참조이기 때문에 작동
cout << X; 
if (cout) { 
    // .... 
} 

동일하다. 이것은 당신이 (이

C에서
((stream << x) << y) << z; 
2

++의 iostream 삽입 및 추출 사업자 <<과 동일하기 때문에

stream << x << y << z; 

등의 작업을 수행 할 수 있으며 호출 된 된 개체를 반환 >> 이유도 즉 그들의 왼쪽 논쟁). 그래서 if(cout<<X)은 먼저 X를 삽입하여 그 스트림을 조건부로 사용합니다. boolean으로 테스트되면 iostream은 상태를보고합니다. 오류가 발생하면 true를, 오류 상태이면 false를 반환합니다.

그래서 모든 것은 "X를 인쇄하고 cout에 오류가없는 경우 다음 코드를 실행하십시오."라는 의미입니다.

1

스트림 포함 (예 : ostreamcout의 등을, 그리고 operator<<(ostream &os, ...)ostream를 반환하기 때문에, 여기에 cout << X 카운트)가 true 인 부울 표현식으로 변환됩니다 임의의 표현식 경우 관련 경우에 출력 (또는 입력,)는 "성공"(다른 말로하면 어떤 방식 으로든 실패하지 않았습니다)이었습니다. 예를 들어, cout이 가득 찬 디스크의 파일로 리디렉션되는 경우 실패합니다.

1

IO 라이브러리는 비트 단위로 >><< 연산자를 입력 및 출력하고 자체적으로 반환하도록 재정의합니다. 따라서 if(cout<<X)X에서 cout까지의 출력을 의미하고 cout이 오류 상태인지 확인하는 if(cout)이라는 조건 확인을 위해 cout을 반환합니다.