完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
int main(void)
{ float A=0.18; if(x==0.18) printf(“Equal”); else printf(“NotEqual”); return 0; } 代码运行的结果是什么?? a.输出依赖于编译器 b.Equal ?? c.Not Equal ??? d.运行出错 |
|
相关推荐
12个回答
|
|
|
|
|
|
xp 32位 系统下的VC6.0运行结果是c
|
|
|
|
|
|
|
|
变量x 都没定义 运行出错
|
|
|
|
在CodeBlocks中用gcc编译了下该代码结果如下(if(x==0.18)应该是if(A==0.18)吧)
同意4楼的观点,应该是精度的问题,而且float和double类型精度不一样。 而if(A==0.18) 中编译器应该把0.18当成double了,而0.18不能用二进制精确表示出来,0.18用float和double分别存在机器中应该是不同的。 我先把程序改了下如下图:把float A=0.18改成了double A=0.18运行结果是Equal 我再改了下程序,把if(A==0.18)修改为if(A==0.18f),结果是Equal,请看下图 最后我把判断的值改成了0.5,0.5这个数是能用二进制精确表示的,请看最后的一个图,这个的结果是Equal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
真不知道答案...只能肯定不是d. (如果不考慮變數X沒宣告..)
你這麼堅持要人作選項...最後有要公布答案嗎XD 5F講得非常詳細... 事實上就算是64位的浮點數也沒辦法正確表示出0.18 http://www.h-schmidt.net/FloatConverter/IEEE754.html 把0.18丟上去看 double表示0.18000000715255737 |
|
|
|
A=0.18f 就输出相等吧
|
|
|
|
C语言默认将小数存储为双精度类型
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4443 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
315浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
303浏览 2评论
314浏览 2评论
320浏览 2评论
356浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 23:14 , Processed in 1.093540 second(s), Total 99, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号