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 ?