c - C代码中的浮点异常

标签 c int bit floating-point-exceptions

#include <stdio.h>
int test1(int x, int n){
    int times=31/n;
    return ((1-(1<<(n*times)))/(1-(1<<n)));
}

我正在进行计算,其中 1<=n<=32

它仅在 1<=n<=31 时有效,如何将其更改为 n=32?当我在 xcode 中测试其 n=32 情况时,它会触发调试器并显示线程 1 exc_arithmetic(code=exc_i386_div...
预先感谢您。

最佳答案

当你这样做时,很有可能 1 << 32 ,它被视为 1 << 0 (并且,由于您正在调用未定义的行为,所以没关系),然后您会得到“浮点异常”,因为您正在执行整数“除以零”。如今,这是导致异常的最常见原因。如果您正在进行浮点算术,则除以零时会(默默地)返回无穷大。

关于c - C代码中的浮点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39925709/

相关文章:

java - 如何从字符串的未知索引中提取两个整数

python - 如何使用 Python 检查数字是否为 32 位整数?

c++ - 根据 vector<bool> 修改 char 的位

python - 如何在不丢失 python 2.x 中的信息的情况下将原始字节存储为文本?

iphone - 用于解码 block 中的 zip 文件的库

c - 多个字符数组的输入不起作用

c - 需要写一个cast操作符

c++ - 将整数附加到 char* 然后清除

C - 在两个数字之间交换一点

c - 为什么在 XWindows 中绘图很重要?