-2147483648%-1导致浮点异常

时间:2019-10-14 09:09:45

标签: c modulo sigfpe

例如:

#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    int a = (int) strtol(argv[1], (char**) NULL, 10);
    int b = (int) strtol(argv[2], (char**) NULL, 10);

    printf("%d %% %d = %d\n", a, b, a % b);
    return (0);
}

(该程序将这些值作为命令行参数,因为当进行硬编码时,我认为-2147483648 % -1在编译时被0替换了

使用-2147483648-1作为第一个和第二个参数分别运行此简单程序会引发SIGFPE。 为什么会这样?还有其他特殊情况吗?我该如何避免呢?

谢谢!

0 个答案:

没有答案