在C语言中,双精度算术每次都产生随机数

在C语言中,双精度算术每次都产生随机数,c,math,double,C,Math,Double,我是一个在大学学习C语言的初学者,我想知道为什么这段代码总是产生一个随机数,而不是我所期望的1 代码: 这是我得到的一些结果。非常感谢您的帮助。您正试图通过整数格式说明符%d打印一个double来调用。请改用浮点说明符: printf("%f\n", a); 我累了,但它只打印0.000000 因为2/5——它执行并因此导致0。因此,a被分配给0。您可能需要执行真正除法的2.0/5.0。您正试图通过整数格式说明符%d打印一个double来调用。请改用浮点说明符: printf("%f\n",

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

代码:

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

您正试图通过整数格式说明符
%d
打印一个double来调用。请改用浮点说明符:

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


我累了,但它只打印0.000000

因为
2/5
——它执行并因此导致
0
。因此,
a
被分配给
0
。您可能需要执行真正除法的
2.0/5.0

您正试图通过整数格式说明符
%d
打印一个double来调用。请改用浮点说明符:

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


我累了,但它只打印0.000000


因为
2/5
——它执行并因此导致
0
。因此,
a
被分配给
0
。您可能需要执行真正除法的
2.0/5.0

那么,“%d”应该是整数类型。
printf(“%f\n”,a)会更好。我很惊讶答案每次都会改变——我希望你最后看到的
a
的前四个字节应该每次都是相同的。相反,情况并非如此——如果你希望得到比现在更长的类型,你可能会看到堆栈上的垃圾。我很累了,但它只打印0.000000?当然——你需要整数除法
2/5
,它是零。@JakeBarnby,这是因为你的表达式以2/5开始,它等于0。将其更改为2.0/5.0。并且读了一本关于C的书。嗯,“%d”应该是整数类型。
printf(“%f\n”,a)会更好。我很惊讶答案每次都会改变——我希望你最后看到的
a
的前四个字节应该每次都是相同的。相反,情况并非如此——如果你希望得到比现在更长的类型,你可能会看到堆栈上的垃圾。我很累了,但它只打印0.000000?当然——你需要整数除法
2/5
,它是零。@JakeBarnby,这是因为你的表达式以2/5开始,它等于0。将其更改为2.0/5.0。读一本关于C的书。
printf("%f\n", a);