C语言 表达式3.5+1/2的计算结果是 3.5 为什么?
是不是因为1和2都是整形所以得出的结果也是整形的不过我记得3.5是实型1和2是整形一个实型和一个整型运算时系统自动把整型转变成实型啊谁帮我解释一下谢谢啦...
是不是因为 1和2 都是整形 所以得出的结果也是整形的 不过我记得 3.5是实型 1和2是整形 一个实型和一个整型运算时 系统自动把整型转变成实型啊 谁帮我解释一下 谢谢啦
展开
8个回答
展开全部
对于表达式“3.5+1/2”,先看看计算顺序:
根据四合运算计算顺序,首先计算除法"1/2"获得结果result;
然后再计算加法“3.5+result”。
在第一步的计算中,除数"1"和被除数"2"在做计算时编译器默认是int类型,所以计算结果也会是int类型。而对于int类型,“1/2”的结果是“0”,所以:3.5+1/2 = 3.5 + 0 = 3.5
想要获得正确的结果在写表达式时应该加入浮点数标识(加小数点),让编译器按照浮点数的方式计算,正确的表达式是:
3.5 + 1.0/2.0 = 3.5 + 0.5 = 4.0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-15
展开全部
在两个操作数相同的时候是不会转化的
就是说 整形 除以 整形 结果 也是整形
只要两个操作数不一致的时候才会向高级别的转向,如 整形 -> 浮点
3.5 + 1/2
3.5 + 1/2.0
试试这两种形式
就是说 整形 除以 整形 结果 也是整形
只要两个操作数不一致的时候才会向高级别的转向,如 整形 -> 浮点
3.5 + 1/2
3.5 + 1/2.0
试试这两种形式
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为1/2的结果是0。
这个是C语言类型处理的问题。1/2编译器处理的时候会认为1和2都是整数,而整数与整数相除结果还是整数,并且是向下取整的整数。虽然3.5是浮点数,但是1/2是先计算的。
如果想要1/2结果是0.5就需要将式子转化为浮点数的除法,方法有两种:
将1写成1.0,比如1.0/2结果就是0.5。
将1强制转化为浮点数,比如((float)1)/2结果也是0.5。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先 1 和 2在该表达式中默认为int型数
其次 1/2 两个整型数相运算是只能得到int型数,在这里表现为只得到该除法的商,商为0
再者,C语言中运算是向上兼容的顺序为:char=short<int<unsigned<long<double和float<double,比如式子中3.5是float型,但在运算中自动转为double(这个原因不在此详细说明),而double和int((int)1/(int)2=(int)0)运算结果也变为了double型
所以你可以大概了解到你最后的结果为3.5,而不是4了,也不是3。
其次 1/2 两个整型数相运算是只能得到int型数,在这里表现为只得到该除法的商,商为0
再者,C语言中运算是向上兼容的顺序为:char=short<int<unsigned<long<double和float<double,比如式子中3.5是float型,但在运算中自动转为double(这个原因不在此详细说明),而double和int((int)1/(int)2=(int)0)运算结果也变为了double型
所以你可以大概了解到你最后的结果为3.5,而不是4了,也不是3。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |