c语言中a=b--<=a||a b!=c怎么算

c语言中a=b--<=a||a b!=c怎么算a=1,b=2,c=3,求计算过程以及计算后ab的值

c

5个回答

先找逻辑运算符“||”
左边:(a=b--) <= a
计算b--的值,b--的值为2(得到这个值也就让b的值变成了1),赋值给a后a的值为2,(a=b--)的值也就是a的值为2,2<=2成立,所以左边为真
右边:(a+b)!=c,a+b的值为3,c的值为3,所以右边为假

真||假的结果为真
b--使b的值变成了1
a=b--的赋值使a的值变成了2
c仍未3

这种题还需要注意“短路”原则。

weixin_46531739
weixin_46531739 回复redsssssssss: 算术运算符高于关系运算符高于比较运算符
7 个月之前 回复
qq_31766907
Fanrncho 受教了,谢谢。
接近 5 年之前 回复
qq_33244225
redsssssssss 谢谢,但是赋值运算符不是优先级最低么
接近 5 年之前 回复

a=b--运算之后,a为2,b为1,(a=b--)依照左值方式值为1,a=b--<=a为true,a+b为3,a+b!=c为false,所以结果为true

答案a = 1, b = 1;
因为a = b-- <= a 为真,a = b-- 结果为1,而b值也为1了,从左往右,再a+b != c 结果也为真,因为,a = 1, b = 1, a + b = 2, c = 3, 所以 a+b != c为真

qq_33244225
redsssssssss 赋值运算符优先级不是最低吗
接近 5 年之前 回复

a=b--<=a||a+b!=c 应该为a=((b--<=a)||(a+b!=c) ) 结果为a = 1, b = 1,纠结了好长时间。

stringNewName
木艮氵 回复qq_33244225: 嗯嗯(●'◡'●)确实如他所言,是我说错了不好意思
接近 5 年之前 回复
qq_33244225
redsssssssss 我觉得也是。。。
接近 5 年之前 回复

嗯,应该是按你所说的这样。实际运行一下才知道结果,是我说错了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问