三国志13妹子:C语言,运算符的优先级

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 06:15:39
x=3,y=2,z=1
下面表达式的值是多少?
z+=x<y?x++:y++

刚刚有2个朋友回答我的问题了
第一种答案:
4吧
先判断x与y的大小,因为x<y值位0,所以y=y+1-3 z=z+y=4
回答者:想念爱尔兰 - 秀才 三级 8-20 11:29

第二种答案:
我想应该是3。
先算Z+=X,得到4,小于Y,执行y++,得到3。
算术运算符的优先级大于条件运算符,故先算z+=x,再算后面的,就得到了。

到底是先算z+=x
还是先算x<y?x++:y++
麻烦大家高速我个答案,以及过程,谢谢
我刚刚在C语言教材里看了一下:
+= 自反算术赋值运算符,优先级别相当底,与赋值是同一级别的
e1?e2:e3 条件运算符,同样优先级别底,仅仅比赋值运算符级别高

照这样看,< 的优先级最高,所以先判断x<y?x++:y++
然后计算z+=y++

有些朋友的结果虽然对,步骤是不一样的
汗!不容易

我刚运行过,答案是3
过程是:
1 判断xy哪个大
2 由于x大,所以有z+=y和y++
3 所以此时z=z+y=1+2=3和y=y+1=2+1=3
4 表达式的值是z的值,就是3
绝对正确,无可怀疑

~~~*********我来解决你的问题********~~~~
答案:4

你的题目:x=3,y=2,z=1
下面表达式的值是多少?
z+=x<y?x++:y++

注意审题,可以看出题目要求你求表达式的值
其实就是求:a,a=(z+=x<y?x++:y++)
这个表达式先计算z=z+x 得z=4
由于4<2不成立 所以得x=3,y=3

但是表达式的值与最后得到的x,y的数并没有关系
其值就是z的值 为4

你也可以用编译器调试下看看结果
我已经做过了

答案就是4 保证无误!!!

答案是3

先算Z+=X,得4
4<2 (因为Y=2 ) 为假的,取冒号后面的Y++

y++ 得3

第二种答案是对的!!确实是算术运算符的优先级大于条件运算符

第一种4是对的
前面那个z+=x是个赋值运算