c++ easy question

问题描述:

c++ easy question
float x=2.5,y=4.7;
int a=7;
x+a%3*(int)(x+y)%2/4
结果为什么是2.5我算是5
————————————
明明x,y定义的是float,为什么(int)(x+y)
关键是a%3*(int)(x+y)%2/4运算顺序
1个回答 分类:综合 2014-11-24

问题解答:

我来补答
(int)优先级高 ,* / %的一样
a % 3 * ( (int)(x+y) ) % 2 / 4 再从左到右
%不适用于浮点型
再问: 那也就是2.5+7%3*7.2%2/4 =2.5+1*7.2%2/4 ?????不会啊
再答: (int)是强制类型转换, (int)(x+y)=(int)7.2=7 +的优先级比*/%低 所以 x+a%3*(int)(x+y)%2/4 2.5 +( ( ( (7%3)*7 )%2)/4) 7%3*7%2=1 1/4因为都是整形的,结果也是整形, 所以是0
再问: 恩! 所以2.5+(((1*7)%2)/4) =2.5+((7%2)/4) =2.5+(1/4) =2.5+0.25 =2.75 不是2.5啊?
再答: 1/4因为都是整形的,结果也是整形, 所以是0
 
 
展开全文阅读
剩余:2000
下一页:铜,及其化合物
也许感兴趣的知识