C++中运算符优先级问题
以下几个有关C++的运算问题我不清楚正确答案是怎么解得的,还望各位大神能指教(1)x+a%3*(int)(x+y)%2/4=2.5 其中,x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x % (int)y=3.5 其中,a=2,b=3,x=3.5,y=2.5
(3)a/=a+a,运算后答案为0,其中a=12
(4)a+=a-=a*=a,运算后答案为0,其中a=12 本帖最后由 永恒的蓝色梦想 于 2020-5-30 15:58 编辑
第一个的过程是这样的: x+a%3*(int)(x+y)%2/4
->2.5+7%3*(int)(2.5+4.7)%2/4
=2.5+1*(int)(7.2)%2/4
=2.5+1*7%2/4
=2.5+7%2/4
=2.5+1/4
=2.5+0
=2.5 永恒的蓝色梦想 发表于 2020-5-30 15:41
第一个的过程是这样的:正确答案是 Runtime Error。
您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error 巨兔12138 发表于 2020-5-30 15:48
您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error
感谢指出,严重失误。 巨兔12138 发表于 2020-5-30 15:48
您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error
已经改了 永恒的蓝色梦想 发表于 2020-5-30 15:57
感谢指出,严重失误。
第一个我已经懂了,第二、三、四个您能给解释一下吗 巨兔12138 发表于 2020-5-30 16:22
第一个我已经懂了,第二、三、四个您能给解释一下吗
稍微一等 巨兔12138 发表于 2020-5-30 16:22
第一个我已经懂了,第二、三、四个您能给解释一下吗
抱歉一时忘了这茬了……
2.(float)(a+b)/2+(int)x % (int)y
->(float)(2+3)/2+(int)3.5%(int)2.5
=5.0/2+3%2
=2.5+1
=3.5
3.a/=a+a
->12/(12+12)
=12/24
=0
第4个你就不需要看了,虽然不是未定义行为,但你绝对不应该这么写。 永恒的蓝色梦想 发表于 2020-5-30 21:48
抱歉一时忘了这茬了……
2.
好的,谢谢
页:
[1]