C语言程序,为什么输出0?不应该是1吗?

C语言程序,为什么输出0?不应该是1吗?,第1张

不对,小数和整数在计算机中的二进制表示法不一样的,系统只是提供了转换的功能而已,使用printf输出的时候,是不会自己转换的,而是强制使用指定格式输出

比如说这个程序,最后a中存储的值(double类型)是1.000000,这个值,前16位(二进制)肯定是0,所以使用%d格式的时候,它不会判断对应的变量是什么类型,就直接把它的前16位以整数的形式输出,所以输出的结果必然是0

所以使用%d并不能使输出结果转换为对应的整数,请改用%.0f输出(因为你的变量a是double型),就可以输出1

你的fun里的形参a是个int类型,你写a=1.0/a,相当于把1.0/a的结果又强制转换成了int,因为你的a肯定比1大,所以结果当然还是0,建议把a=1.0/a改成return 1.0/a,a=0改为return 0

如果后面还有一个int s,你要求输出s。因为你的第一个s已经赋值为0了,第二个s在循环里面,还没有跑完就直接输出了,这时候输出的是第一个s,当然是0了。至于去掉int后,s指向于刚开始你定义的int s,经过循环运算后,s就被赋值为30了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11020588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存