黑马程序员技术交流社区
标题:
关于C语言单精度双精度的问题
[打印本页]
作者:
koukou
时间:
2014-6-8 18:55
标题:
关于C语言单精度双精度的问题
若有定义:inta=7;float x=2.5,y=4.7;则表达式 x=a%3*(int)(x+y)%2/4的值是?
详细解答:
首先你说的精度是指精确度,并不是保留小数的位数,这两个概念不同,你可能弄混了,而输出的时候,double和float默认都是保留六位,我就再这里给你解释一下这两个题目吧。 首先看第一题,题目的运算顺序就是从左到右计算,a%3值为1,(int)(x+y)值为7,a%3*(int)(x+y)值为7,a%3*(int)(x+y)%2值为1,a%3*(int)(x+y)%2/4值要看他的赋值对象和输出格式了,要是整形就直接舍去小数,要是浮点型就保留小数。
作者:
傘が咲く
时间:
2014-6-12 08:35
分析的不错。:lol
作者:
sen
时间:
2014-6-12 23:19
赞一个,
作者:
世俗孤岛
时间:
2015-3-14 11:39
顶一个!
作者:
sydie
时间:
2015-3-14 17:14
:)不错,分析挺好的
作者:
舒少勇
时间:
2015-3-19 11:02
分析的太棒了 顶一个
作者:
yuang4074
时间:
2015-3-19 19:47
理解的很好,让我也茅塞顿开
作者:
CoYim
时间:
2015-3-19 19:56
基本上没有什么区别,都是表示小数
不过它们的宽度不一样,或者说精度不一样,float是单精度,double是双精度
它们表示小数的范围不一样,double能表示的范围,比float大
double在内存中,占8个字节,float占4个字节
默认情况以%f打印就是输出小数点后六位小数,%.2f表示输出两位小数
float和double的关系就像short跟long的关系一样
作者:
lyz0925
时间:
2015-3-19 22:00
貌似没有说出答案吧?
作者:
世俗孤岛
时间:
2015-3-20 12:27
分析的正确吗?
作者:
baby14
时间:
2018-8-14 08:23
多谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2