为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这里原来的输出结果是-1248013944

http://img1.sycdn.imooc.com//55dfc45500017f6a14470190.jpg

和题目一样


正在回答

4 回答

没有强制转换的时候将输出语句printf内的%d改为%f就会输出2.5,如果不改直接用%d输出,那么C语言中无法识别只定义的浮点型而调用的整型,导致出现乱码,随机输出一个数

0 回复 有任何疑惑可以回复我~

浮点数在储存时通常遵循IEEE754标准,即将整数部分和指数部分分别存入不同的位中。不过不同平台会有不同的实现,不一定都遵循IEEE标准。

printf会将后面的相应参数按照第一个参数中格式化指示符进行解释,这样浮点数的二进制表示如果当成是整型的话,就会出现类似“乱码”的输出。具体输出多少跟你的平台实现有关,在我的64位机器上用gcc编译,打印出的是0。

2 回复 有任何疑惑可以回复我~

我是说不是没有强制转换的时候的输出结果为什么是-1248013944

0 回复 有任何疑惑可以回复我~
#1

KingMisy

%d 应该改成%f
2015-08-29 回复 有任何疑惑可以回复我~

你那个双精度如果想转成整数输出,就得利用强制转换,在printf中的num前加(int),成(int)num。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么这里原来的输出结果是-1248013944

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信