我是一名初学者,正在大学学习C语言,并且想知道为什么这段代码总是产生一个随机数,而不是像我期望的那样。
代码:
#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
是我得到的一些结果。任何帮助表示赞赏。
答案 0 :(得分:5)
您通过尝试通过整数格式说明符%d
打印双精度来调用undefined behavior。请改用浮点说明符:
printf("%f\n", a);
我累了,但它只打印0.000000?
由于2 / 5
- 执行integer division,从而产生0
。因此,a
被分配给0
。您可能希望2.0 / 5.0
执行真正的除法。