2012-01-31 5 views
7

C++ 언어 정의는 char을 bool로 캐스팅하고 char을 다시 캐스팅하는 것에 대해 무엇을 약속합니까?bool을 통해 char 왕복 캐스트가 어떻게됩니까?

char original = 255; 
bool next = original; 
char final = next; 

대부분의 컴파일러는이 경우 언어가 보장하는 것 이상 무엇을합니까?

답변

13

원래 값이 0인지 아닌지에 따라 값이 0 또는 1이됩니다. bool로 변환

true 또는 false의 값을 제공한다 :

4.12 널 부재 포인터 값으로 변환된다 false 제로 값, 널 포인터 값이거나; 다른 값은 true으로 변환됩니다. char 다시 변환

제로 false 변환하고 true 한 다음 소스 타입 bool이다

4.7/4의 경우, 값 false은 제로 에 true 변환 된 값을 변환되고 하나에.

3

적분 값 또는 truefalse 4.12 하나로 bool 결과로 변환 bool10 또는 하나의 정수 값으로 변환 결과 (45 (6)). 4 장 (표준 변환)을 참조하십시오.

2

bool로 변환하면 0과 null은 false로 변환되고 나머지는 모두 true로 변환됩니다. bool에서 변환 할 때 false는 0으로 변환되고 true는 1로 변환됩니다.