> 백엔드 개발 > C++ > Bool-to-Int 변환이 C 및 C99에서 실제로 이식 가능합니까?

Bool-to-Int 변환이 C 및 C99에서 실제로 이식 가능합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-07 22:25:14
원래의
626명이 탐색했습니다.

Is Bool-to-Int Conversion Truly Portable Across C   and C99?

Bool을 Int로 변환: 이식성에 대한 자세한 검토

특정 프로그래밍 시나리오에서는 bool을 int 값으로 변환해야 합니다. 그러나 다양한 플랫폼 간 이식성에 대한 우려가 있습니다. 이 기사에서는 이 변환의 이식성에 대한 포괄적인 분석을 제공하며 다음 주장이 통과될 것이라고 확신할 수 있는지에 대한 질문을 해결합니다.

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);
로그인 후 복사

Standard Conformant Conversion

C에서 bool-int 변환은 C 표준에 의해 암시적으로 정의됩니다. C 11 또는 14 표준의 §4.7/4 및 C 17 표준의 §7.8/4에 따르면 "소스 유형이 bool인 경우 false 값은 0으로 변환되고 true 값은 1로 변환됩니다." 이는 다음을 의미합니다.

  • 4 < 5는 true로 평가되어 int 값 1로 변환됩니다.
  • 4 > 5는 false로 평가되며 이는 int 값 0으로 변환됩니다.

따라서 bool을 int로 변환하는 것은 C에서 완전히 이식 가능하고 표준을 준수합니다.

C에 대한 고려

C99에서는 기본 정수인 _Bool 유형을 도입했습니다. 유형. stdbool.h에는 bool, true 및 false 매크로도 도입되었습니다. C99 표준의 섹션 7.16에서는 true가 정수 상수 1로 확장되고 false가 0으로 확장된다고 명시합니다. 따라서 이러한 매크로는 C의 bool 변환과 유사하게 동작합니다.

결론

bool-int 변환은 C 및 C99 이상을 지원하는 다양한 플랫폼에서 이식 가능합니다. 프로그래머는 이 기사의 시작 부분에 표시된 주장이 두 언어 모두에서 성공적으로 통과할 것이라고 확신할 수 있습니다. 최대의 이식성과 명확성을 위해 표준 부울 유형을 사용하는 것이 좋습니다.

위 내용은 Bool-to-Int 변환이 C 및 C99에서 실제로 이식 가능합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿