当前位置: 代码迷 >> C语言 >> 求助!
  详细解决方案

求助!

热度:281   发布时间:2008-06-13 16:12:24.0
求助!

遇到一道题:
x=2.5,y=4.7,a=7;

表达式x+a*5%3*(int)(x+y)%24/4;
和x+a*5%3*(int)(x+y)%6;
值怎么不一样?根据优先级和运算原则应该一样吧,但我在机器上实验了,1个是5.5,1个是4.5
怎么回事?
请高手指教!

----------------解决方案--------------------------------------------------------
应该不一样,一个是先求对24的余,再求对4的整数商;一个是求对6的余
----------------解决方案--------------------------------------------------------
不知道,等高手来解决吧
----------------解决方案--------------------------------------------------------
回复 3# paome 的帖子
2楼说的对,%的优先级比/的优先级高,从左往右算,所以%24/4和%6是不一样的。
----------------解决方案--------------------------------------------------------
答案没错,1个5.5,一个4,5,注:*,/,%是等级运算符,结合性从左向右,所以第一条结果为2.5+35%3*7%24/4=2.5+14%24/4=2.5+14/4=5.5,第二条结果为2.5+35%3*7%6=2.5+14%6=2.5+2=4.5,不知道讲得算不算详细
----------------解决方案--------------------------------------------------------
同时对上面的纠正下4楼的说法,%的优先级不比/高
----------------解决方案--------------------------------------------------------
谢谢指教!
谢谢啦!
----------------解决方案--------------------------------------------------------
  相关解决方案