c语言中逻辑表达式的短路碰到了括号

2024-11-30 02:43:11
推荐回答(3个)
回答(1):

x=(a=1)||(b=2)&&(c=3)&&(d=4);
关键是对这个语句的理解,首先这是个赋值语句,将逻辑表达式(a=1)||(b=2)&&(c=3)&&(d=4)的值赋值给x 。
然后就是对逻辑运算优先级的理解了,对于||逻辑运算符,表示“或”,如果左侧为假,则执行右侧表达式,如果左侧为真,则不再执行右侧的表达式,结果为真。
例子:a=0;
b=1||(a=1);
输出结果就是a=0,b=1 。不知道你能理解不能:)

回答(2):

x=(a=1)||(b=2)&&(c=3)&&(d=4);
其中||是逻辑运算符
a=1
把1赋值给a
a为1
故(a=1)值为真
(a=1)||(b=2)&&(c=3)&&(d=4)表达式运算结束

结果为1

把=换成==

回答(3):

=是赋值,==才是判断相等
给你个技巧,以后再遇到判断a == 1的时候写成1 == a,这样即达成了判断的效果,也避免了写成a = 1的错误,因为1 = a会被编译报错。