浮動小数点除算をゼロで実行する小さなプログラムがありますので、SIGFPEが必要です。0で除算してもSIGFPEは返されません
#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(Ubuntuの/リナロ4.5.2-8ubuntu4)
私はこれでSIGFPEを投げるために何をすべき場合? FPの動作が依存する要因(コンパイラフラグ/ CPUの種類など)
おかげ
IEEE浮動小数点数を持つ場合は、これはかなり標準です。 – Ingo
同様の質問:[実行時に計算結果がNaNまたはinfになったときにgccに通知できますか?](http://stackoverflow.com/questions/2941611/can-i-make-gcc-tell-me-when-計算結果のイン・ラン・イン・ランタイム) – sleske