黑马程序员技术交流社区

标题: 关于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