0으로 정수 나누기로 인해 부동 소수점 예외 발생
질문:
정수 나누기를 다음으로 수행합니까? 0은 항상 부동 소수점을 트리거합니다. 예외?
답변:
아니요, 모든 플랫폼이 0으로 정수 나누기를 부동 소수점 예외로 보고하는 것은 아닙니다. 그러나 특정 운영 체제와 C/C 런타임에서는 이 예외를 다르게 처리할 수 있습니다.
POSIX 플랫폼:
POSIX에서는 특히 정수를 0으로 나누면 SIGFPE(부동 부동)가 발생하도록 요구합니다. 포인트 예외) 신호. POSIX는 또한 0으로 나누기 위한 FPE_INTDIV_TRAP와 같은 다른 유형의 부동 소수점 예외와 구별되는 추가 정보를 제공합니다.
기타 플랫폼:
FP 예외 의미:
부동 소수점 예외는 일반적으로 기본적으로 마스크됩니다. 이를 통해 0.0 / 0.0과 같은 작업이 예외를 트리거하지 않고 NaN을 생성할 수 있습니다. 그러나 이는 예외가 발생했는지, 어떤 유형이 발생했는지 확인하기 위해 예외 플래그를 수동으로 확인해야 함을 의미하기도 합니다.
FP 대 정수 오류 감지:
정수 나누기에는 NaN 또는 Inf 결과를 생성하는 옵션이 없으므로 예외 처리가 더 간단해집니다. 그러나 x86에서는 "부동 소수점 유효하지 않음" 예외가 마스크된 경우 특정 명령을 사용하여 정수로 변환된 범위를 벗어난 부동 소수점 값이 "부정 정수" 값(INT_MIN)을 생성할 수 있습니다.
위 내용은 0으로 정수 나누기를 하면 항상 부동 소수점 예외가 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!