和题目一样
没有强制转换的时候将输出语句printf内的%d改为%f就会输出2.5,如果不改直接用%d输出,那么C语言中无法识别只定义的浮点型而调用的整型,导致出现乱码,随机输出一个数
浮点数在储存时通常遵循IEEE754标准,即将整数部分和指数部分分别存入不同的位中。不过不同平台会有不同的实现,不一定都遵循IEEE标准。
printf会将后面的相应参数按照第一个参数中格式化指示符进行解释,这样浮点数的二进制表示如果当成是整型的话,就会出现类似“乱码”的输出。具体输出多少跟你的平台实现有关,在我的64位机器上用gcc编译,打印出的是0。
我是说不是没有强制转换的时候的输出结果为什么是-1248013944
你那个双精度如果想转成整数输出,就得利用强制转换,在printf中的num前加(int),成(int)num。