0으로 부동 소수점 나누기를 수행하는 작은 프로그램이 있으므로 SIGFPE가 필요합니다.0으로 나누기가 SIGFPE을 throw하지 않습니다
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
void signal_handler (int signo) {
if(signo == SIGFPE) {
std::cout << "Caught FPE\n";
}
}
int main (void) {
signal(SIGFPE,(*signal_handler));
double b = 1.0;
double c = 0.0;
double d = b/c;
std::cout << "d = "<< d << std::endl;
return 0;
}
사실, 나는 다음과 같은 출력을 가지고 :
d = inf
GCC 버전 4.5.2 (우분투/리나 4.5.2-8ubuntu4)
를 내가이에 SIGFPE를 던져해야 케이스? FP 연산 동작이 의존하는 요인 (컴파일러 플래그/CPU 유형 등)은 무엇입니까?
감사합니다.
IEEE 플로트가있는 경우에는이 코드가 꽤 표준 적이어야합니다. – Ingo
비슷한 질문 : [계산시 NaN 또는 inf가 런타임에 표시 될 때 gcc에 알려 줄 수 있습니까?] (http://stackoverflow.com/questions/2941611/can-i-make-gcc-tell-me-when- a- 계산 결과 in-nan-or-inf-at-runtime) – sleske