c - 双重运算每次在C中产生随机数

标签 c math double

我是一名在大学学习 C 语言的初学者,我想知道为什么这段代码总是产生一个随机数,而不是我期望的 1。

代码:

#include<stdio.h>

int main(void){
    double a, b = 32.5;
    a = 2 / 5 * (b - 30);
    printf("%d\n", a);
    return 0;
}

当我运行代码时,它每次都会打印出不同的随机值:

-780835368
-1509625304
1267593528

是我得到的一些结果。感谢您的帮助。

最佳答案

您正在调用 undefined behavior通过尝试通过整数格式说明符 %d 打印 double 。请改用浮点说明符:

printf("%f\n", a);

I tired that but it only print 0.000000?

因为 2/5 -- 执行 integer division从而导致 0。因此,a 被分配给 0。您可能想要执行真正除法的 2.0/5.0

关于c - 双重运算每次在C中产生随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976121/

相关文章:

java - 如何使用 C 读取从 JAXB 生成的 XML

c - 矩阵的逆不准确

c - 指针到指针的段错误

python - 为什么TensorFlow的除法没有axis参数?

algorithm - 检查循环(模 16)数是否大于另一个?

CUFFT double

c++ - 在 C++ 中检查 double (或 float )是否为 NaN

xcode - 类型 'Double' 不符合协议(protocol) 'Sequence Type'

python - C通过系统调用执行python脚本

c - 按升序排列多次绘制的数字。 [ C ]