Tôi có một chương trình nhỏ thực hiện phân chia dấu phẩy động bằng không, vì vậy tôi mong đợi SIGFPE.Phân chia bằng không không ném 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;
}
Thực ra, tôi có kết quả như sau:
d = inf
phiên bản gcc 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
Những gì tôi nên làm gì để ném SIGFPE trong này trường hợp? Hành vi hoạt động của FP nào phụ thuộc vào (cờ biên dịch/loại CPU và vv)?
Cảm ơn
Điều này sẽ là khá chuẩn nếu bạn có IEEE nổi. – Ingo
Câu hỏi tương tự: [Tôi có thể làm cho gcc cho tôi biết khi kết quả tính toán trong NaN hoặc inf trong thời gian chạy không?] (Http://stackoverflow.com/questions/2941611/can-i-make-gcc-tell-me-when- a-calculator-results-in-nan-or-inf-at-runtime) – sleske