부울을 정수로 변환할 때 항상 0 또는 1이 될 수 있습니까?
부울 값을 정수로 변환할 때 많은 컴파일러에서 겉보기에 0 또는 1만 유지하므로 이 동작의 신뢰성에 대한 의문이 제기됩니다. 예를 살펴보겠습니다.
int a = 2; bool b = a; int c = 3 b; // What is the result? 4 or 5?
답변: 예, bool은 정수로 변환될 때 0 또는 1이 보장됩니다.
C에서 :
C 표준(§4.5/4)은 다음과 같이 명시적으로 명시합니다. "bool 유형의 rvalue는 다음과 같이 int 유형의 rvalue로 변환될 수 있습니다. false는 0이 되고 true는 1이 됩니다."
In C:
값이 _Bool로 변환되면 0 또는 1이 됩니다(§6.3.1.2/1 ): "스칼라 값이 _Bool로 변환될 때 값이 0과 같으면 결과는 0입니다. 그렇지 않으면 결과는 다음과 같습니다. 1."
int로 변환할 때 int는 0과 1을 보유할 수 있으므로 값이 변경되지 않으므로 프로세스가 간단합니다(§6.3.1.3).
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3