さて、私は SIGFPE に関する記事を検索し、いくつかのテストを書きましたが、動作が奇妙です。次に、助けを求めるためにここに投稿する必要があります。GCC/G++ または ISO C++ は、ゼロで除算するとどうなるかを明確に定義していますか?
1) 記事を検索しました: Division by zero does not throw SIGFPE it sames the output is inf
2)次のように書き直すと:
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;
}
その場合、signal_handler は発生しません。しかし、行のコメントを外すと
//fprintf(stderr,"d number is %d\n,d);
その後、signal_handler は呼び出しを続けます。
誰かがそれを説明できますか?