相关疑难解决方法(0)

除以零不会抛出SIGFPE

我有一个小程序执行零浮点除法,所以我期待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;
}
Run Code Online (Sandbox Code Playgroud)

实际上,我得到了以下输出:

d = inf
Run Code Online (Sandbox Code Playgroud)

gcc版本4.5.2(Ubuntu/Linaro 4.5.2-8ubuntu4)

在这种情况下,我应该怎么做才能抛出SIGFPE?FP操作行为依赖于哪些因素(编译器标志/ CPU类型等)?

谢谢

c++ floating-point gcc sigfpe

17
推荐指数
3
解决办法
6973
查看次数

程序立即停止在 C 中?

我写了这段代码:

#include <stdio.h>

int main() {
    printf("Works");
    int base = 1;
    do {
        if (base > 1) {
            for (int i = 0; i <= base; i++) {
                if ((base % i) == 0) {
                    break;
                } else {
                    printf("%d ", base);
                }
            }
        }
        base += 1;
    } while (1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它编译完美,但是当我运行它时,终端刚刚关闭,我不知道如何调试它,因为我对用 c 编写程序非常陌生。

编辑:这应该永远生成素数。

c

-1
推荐指数
3
解决办法
151
查看次数

标签 统计

c ×1

c++ ×1

floating-point ×1

gcc ×1

sigfpe ×1