巨兔12138 发表于 2020-5-30 15:20:59

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:41:32

本帖最后由 永恒的蓝色梦想 于 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

巨兔12138 发表于 2020-5-30 15:48:31

永恒的蓝色梦想 发表于 2020-5-30 15:41
第一个的过程是这样的:正确答案是 Runtime Error。

您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error

永恒的蓝色梦想 发表于 2020-5-30 15:57:21

巨兔12138 发表于 2020-5-30 15:48
您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error

感谢指出,严重失误。

永恒的蓝色梦想 发表于 2020-5-30 15:59:39

巨兔12138 发表于 2020-5-30 15:48
您有个计算错误,2.5+4.7=7.2,您算成8.2了,所以您给的结果是Error

已经改了

巨兔12138 发表于 2020-5-30 16:22:39

永恒的蓝色梦想 发表于 2020-5-30 15:57
感谢指出,严重失误。

第一个我已经懂了,第二、三、四个您能给解释一下吗

永恒的蓝色梦想 发表于 2020-5-30 17:01:49

巨兔12138 发表于 2020-5-30 16:22
第一个我已经懂了,第二、三、四个您能给解释一下吗

稍微一等

永恒的蓝色梦想 发表于 2020-5-30 21:48:06

巨兔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个你就不需要看了,虽然不是未定义行为,但你绝对不应该这么写。

巨兔12138 发表于 2020-6-1 11:24:03

永恒的蓝色梦想 发表于 2020-5-30 21:48
抱歉一时忘了这茬了……

2.


好的,谢谢
页: [1]
查看完整版本: C++中运算符优先级问题