C语言含自增自减运算符的逻辑表达式求值规则及实例疑问
表达式
c-- || ++a && b-- 求值过程解析 先明确两个关键规则:运算符优先级、短路求值,这俩结合起来就是整个过程的核心:
运算符优先级确定结合结构
&& 的优先级确实比 || 高,所以这个表达式会被编译器解析为:c-- || (++a && b--)也就是先把
++a和b--绑定成 && 运算的左右操作数,再把这个整体作为 || 的右操作数。短路求值决定执行顺序
|| 是短路运算符——只要左操作数的值为真,就直接返回真,完全不会计算右操作数。具体到你的代码:- 初始值:
a=0, b=1, c=1 - 先计算左操作数
c--:这是后置递减,表达式取 c 的当前值1(为真),然后 c 被减为0 - 因为左操作数已经是真,|| 直接返回真,右边的
++a && b--完全不会执行,所以 a 和 b 的值保持初始的0和1不变
- 初始值:
最终结果:if 条件为真,变量值为 a=0, b=1, c=0
内容的提问来源于stack exchange,提问作者mizzadnan
相关产品推荐
相关产品推荐

