永发信息网

pow(10,2)用整形输出结果为0 用浮点数输出结果是100.0是什么情况

答案:2  悬赏:60  手机版
解决时间 2021-11-29 03:31
pow(10,2)用整形输出结果为0 用浮点数输出结果是100.0是什么情况
最佳答案
不是编译器的问题。pow()返回值类型是double的。对double/float类型数据输出格式用“%d”,就是会得到奇怪的值.

为了避免这种情况,可以加上类型转换:
printf("%d", pow(10,2)) -----> 输出为0
printf("%d", (int)pow(10,2)) ----> 输出为100

这跟va_start/va_arg/va_end 分析变参有关。printf遇到“%d“,就去用int*类型去变参列表中取变量,而float/double是8个字节的,所以只取到了一半——4个字节。
再看浮点100在内存中是如何存储的:
00 00 00 00 00 00 59 40 ---- 浮点100在内存中的存储(16进制,8个字节)。

用int指针去取4个字节,就得到了0.
而如果我们使用强制类型转换将浮点转换为int,就能得到正确的100.
全部回答
应该是
望采纳
后者你把具体代码发出来
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
毛豆种到哪买
大家来说说雪花啤酒里,哪个度数最低
怎样用咖喱粉做咖喱饭?但我没有黄油。
iPhoneX和三星Note8哪个好
一首男生唱的英文歌,歌词有:hi boy ,boybo
87年女兔和87年男兔结婚合适吗?
纳米汗蒸能增肥吗?本人太膄1.72米只有54公斤
上海引驭实业有限公司怎么样?
人在苦难中成长,是否有此名言
地域特点是什么
单选题________abeautifulpicture!A.SoB.What
魅族pro5手机扫一扫功能怎么不能用呢扫,封面
我把宾馆的万能遥控器丢了,大约多少钱
吴鸣霄被罚13亿
卖房子,没业绩,好痛苦
推荐资讯
一个星期是从周一开始还是从周日开始
阿尔法智投如何赎回
CAV音响产品好吗?怎么才能买到合适的产品?
广州魔莉卡文化传播有限公司怎么样?
正宗泰山花椒鸡怎么做
DNF游戏登陆不上是怎么回事?
三十三万元的美金大概是人民币的多少
苹果的卡贴机是什么
小荷才露尖尖角后面一句是什么?
四川南充王氏字辈
我叫MT里国足的绝招
日语:家 读成いえ和うち有区别吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?