2010-01-28 1 views
8

생성자에 의해 초기화되지 않은 bool 데이터 멤버가있는 클래스가 있습니다. 내가 xbool가 초기화되지 않은이 클래스의 목적은cout (C++)을 사용하여 초기화되지 않은 bool 인쇄

cout << x.myBoolDataMember; 

을 할 경우에, 나는 가끔이 아니라 0 또는 1 난수 수 (나는 gcc을 사용하고 있습니다.)이 문제인가 Standard과 호환 되나요?

답변

10

이 동작은 표준을 준수합니까?

예! 코드에서 가비지 값 사용 (초기화되지 않음) 정의되지 않은 동작

4

예. 초기화되지 않은 변수는 모든 값을 가질 수 있습니다.

+0

정의되지 않은 동작이있는 경우 값에 관해 이야기하기가 어렵습니다. 'bool'은'false'와'true' 두 가지 값만 가질 수 있습니다. 'cout << b'가'0'과'1' 이외의 것을 출력한다는 사실은'b'가'false' 나'true' 이외의 값을 가지지 않고 정의되지 않은 결과입니다. – avakar

+3

참. 0.5, "파란색"또는 연기가 나는 것도 전혀 인쇄 할 수 없습니다. – MSalters

+1

고양이가 될 수 있습니다. 악마가 코에서 날아갈 수 있습니다. –

0

"< <"연산자가 bool을 검사하지 않는 즉시이 동작은 정확합니다.
여기에있는 문제는 bool 자체에 숨겨져 있습니다. 프로그램은 둘 이상의 비트를 사용하여 bool을 저장합니다. 이것은 구현에 달려 있습니다. 가끔 한 비트 만이 bool을 저장하는 데 사용될 수 있습니다.
때때로 더 많은 경우이며 그러한 경우입니다.

관련 문제