>백엔드 개발 >C++ >C는 부울 값을 어떻게 암시적으로 정수로 변환합니까?

C는 부울 값을 어떻게 암시적으로 정수로 변환합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-03 20:47:11527검색

How Does C   Implicitly Convert Boolean Values to Integers?

암시적 변환: bool을 int로 변환

C에서는 int 변수에 bool 표현식을 할당할 때 직관적이지 않은 변환이 발생합니다. 다음 코드 조각을 고려하십시오.

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

x = 4 > 5;
assert(x == 0);

변환 세부 정보

C 표준(C 11/14의 §4.7/4, C 11/14의 §7.8/4)에 따름 C 17, §7.3.9/2 in C 20):

  • 부울 값 false는 암시적으로 0으로 변환됩니다.
  • 부울 값 true는 암시적으로 1로 변환됩니다.

따라서 주어진 코드, 4 < 5는 true로 평가되고, 이는 1로 변환되어 x에 저장되는 반면, 4 > 5는 false로 평가되어 0으로 변환되어 x에 저장됩니다.

이식성

이 암시적 bool에서 int로의 변환은 모든 C 플랫폼에서 이식 가능합니다.

C와의 비교

C와 다름 , C는 C99 표준 이전에는 bool 데이터 유형을 명시적으로 지원하지 않습니다. 그러나 C99 표준에서는 C의 bool과 동일한 _Bool 유형을 도입했습니다. C99에서는 true 및 false 매크로가 각각 정수 상수 1과 0으로 확장됩니다. 결과적으로 bool에서 int로의 변환 동작은 C와 C 모두에서 유사합니다.

결론

주어진 코드에서 암시적인 bool에서 int로의 변환은 표준을 준수합니다. C 플랫폼에서 이식 가능합니다. 정통적이지 않은 것처럼 보일 수도 있지만 C 언어의 기본 동작을 이해하는 데 필수적입니다.

위 내용은 C는 부울 값을 어떻게 암시적으로 정수로 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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