关于c语言的问题?

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-14
任何一个包含了++和任何其他运算符组合的题目尽量少做。这种式子再工作中绝对不会出现,谁写都可能被开除的
y=(++a)&&(--b)&&(c=b+3)
根据&&运算规则,首先算++a,得到1,然后算--b,得到0,由于--b为0,c=b+3不计算
所以a=1,b=0,c=3,y=0
y=(++a)||(--b)||(c=b+3)
同样,++a得到a=1, 后面的--b, c=b+3都 不计算
所以a=1,b=1,c=3, y=1
相似回答