> 백엔드 개발 > C++ > 일부 C 구현에서 `(-2147483648 > 0)`이 True로 평가되는 이유는 무엇입니까?

일부 C 구현에서 `(-2147483648 > 0)`이 True로 평가되는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-30 06:32:14
원래의
271명이 탐색했습니다.

Why Does `(-2147483648 > 0)` 일부 C 구현에서 True로 평가됩니까?
0)` 일부 C 구현에서 True로 평가됩니까? " />

C에서 (-2147483648 > 0)이 True를 반환하는 이유는 무엇입니까?

C에서 -2147483648은 양수 리터럴 값(2147483648)으로 해석됩니다. 단항 빼기 연산자를 사용하면 됩니다. 플랫폼에서 int 범위를 오버플로하면 컴파일러의 동작이 정의되지 않습니다.

실제로 정의되지 않은 동작으로 인해 다양한 해석이 발생할 수 있습니다. 일부 구현에서는 값을 단항 마이너스를 적용한 후 양수가 되는 음수로 나타낼 수 있습니다. 다른 사람들은 이를 표현하기 위해 부호 없는 유형을 사용할 수도 있습니다.

이러한 모호성을 피하기 위해 일반적으로 INT_MIN과 같은 상수가 정의됩니다. as

#define INT_MIN (-2147483647 - 1)
로그인 후 복사

in

#define INT_MIN -2147483648
로그인 후 복사

이렇게 하면 INT_MIN이 의도한 올바른 음수 값을 나타내는 것이 보장됩니다.

표현식을 int로 캐스팅할 때

if (int(-2147483648) > 0)
로그인 후 복사

컴파일러는 int 영역에서 표현식을 음수로 평가하여 false를 반환합니다.

정의되지 않은 동작은 컴파일러와 플랫폼마다 다르다는 점에 유의하는 것이 중요합니다. 예측 가능한 결과를 보장하려면 항상 명시적으로 정의된 상수를 사용하고 구현별 동작으로 이어질 수 있는 경계선 값을 피하는 것이 좋습니다.

위 내용은 일부 C 구현에서 `(-2147483648 > 0)`이 True로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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