首页
社区
课程
招聘
未解决 [求助] printf("%d\n",11.0);这个值输出为什么是0?
发表于: 2019-1-25 10:25 2013

未解决 [求助] printf("%d\n",11.0);这个值输出为什么是0?

2019-1-25 10:25
2013

问题描述:用printf直接打印11.0,并且格式化符号为整数。

困惑:按照我的理解是,11.0是双精度类型,会强转成整形,输入结果“应该”是11,但是结果是0,不知道为什么?(ps:本人菜鸟一只,求大神赐教)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-1-25 10:33 被flyleela编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
不会强转,会在堆栈push两个DWORD (00 00 00 00 00 00 26 40), %d只显示了低位(也就是0)。高位被忽略了。
2019-1-25 10:45
1
雪    币: 704
活跃值: (3360)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
3
printf接收不定参数,所以他不会强制转换。如果是一个指定int类型参数的函数,那么就会强制转换。你需要(int)11.0这样
2019-1-25 11:38
1
游客
登录 | 注册 方可回帖
返回
//