well, I have searched the articles about SIGFPE ,then I wrote a few tests but it's behavoir is strange. Then I have to post it here to ask for help. Is the GCC/G++ or ISO C++ clearly defined what happens if divide by zero?
1) I searched the article : Division by zero does not throw SIGFPE it sames the output is inf
2) If I rewrite it as the following:
void signal_handler (int signo) {
if(signo == SIGFPE) {
std::cout << "Caught FPE\n";
}
}
int main (void) {
signal(SIGFPE,(*signal_handler));
int b = 1;
int c = 0;
int d = b/c;
//fprintf(stderr,"d number is %d\n,d);
return 0;
}
then signal_handler will not happens. but if I uncomment the line
//fprintf(stderr,"d number is %d\n,d);
then signal_handler keeps calling.
can someone explains it ?
SIGFPE
(floating point error), but floating point division by zero yields infinity as the answer. – Champollionint c = 0; int d = b/c;
? which meansb/0
? – Tennoprintf
. If I addsignal(SIGFPE,(*signal_handler));
inside the signal handler, then I reproduce you. Linux 3.10, gcc 4.7.3. – Brian