>백엔드 개발 >C++ >항상 `(bool)true`가 C의 `(int)1`과 동일하다고 가정할 수 있습니까?

항상 `(bool)true`가 C의 `(int)1`과 동일하다고 가정할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-28 18:44:111041검색

Can I Always Assume `(bool)true` is Equivalent to `(int)1` in C  ?

컴파일러 전반에 걸쳐 (bool)true와 (int)1 사이에 동등성을 가정할 수 있습니까?

당면 질문은 동등성 여부에 관한 것입니다. (bool)true == (int)1은 C 컴파일러에 대해 보편적으로 true를 유지합니다. 즉, 이 두 표현의 상호교환 가능성을 안전하게 가정할 수 있습니까?

제공된 응답에 따르면 대답은 "예"입니다. 통합 프로모션으로 인해 출연진 자체가 불필요합니다. 적분 승격은 bool 값이 자동으로 int로 승격되고 true가 특히 정수 값 1로 승격되는 것을 나타냅니다.

이 동작은 C 표준 섹션 4.7 [conv.integral] / 4에 자세히 설명되어 있습니다. "소스 유형이 bool이면... true는 1로 변환됩니다."

따라서 true == 1이라는 표현은 본질적으로 1과 동일합니다. == 1, 사용 중인 컴파일러에 관계없이 true로 평가됩니다.

위 내용은 항상 `(bool)true`가 C의 `(int)1`과 동일하다고 가정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.