a 为 0,b 为 1,c 为 3,计算并输出执行语句
“y=(++a)&&(--b)&&(c=b+3);”后 a、b、c、y 的值。
如果将语句改为“y=(++a)||(--b)||(c=b+3);”,结果又是多少?
根据运算符优先级/结合性
y=(++a)&&(--b)&&(c=b+3)
即
y=( (++a)&&( (--b)&&(c=b+3) ) )
代入数值后,子表达式
++a的值为1,且变量a自增为1
--b的值0,且变量b自减为0
由于子表达式--b的值为0(假),所以&&右操作数(c=b+3)不会判断,c还是原值3,而表达式整体值为0
所以,a=1,b=0,c=3,y=0
同理,y=(++a)||(--b)||(c=b+3)
分别对子表达式求值
++a值为1,且a自增为1
由于||表达式的做左操作数已经为1(真),所以右操作数不会再判断,b和c还是原值,表达式整体值为1
所以,a=1,b=1,c=3,y=1