x 为 1,y 为 3,z 为 3。经过 '- -x && y++ || z++' 后,'- -x' 为 0,'y++' 为 3,所以 '&&' 运算符后面的表达式为 0,直接执行 '||' 运算符后面的表达式,'z++' 为 4,所以最终输出为 0、3、4。

解释:

  • 运算符优先级: '- -' 的优先级高于 '&&','&&' 的优先级高于 '||'。
  • 短路求值:
    • 在 '&&' 运算符中,如果第一个表达式为 false (0),则第二个表达式不会被执行。
    • 在 '||' 运算符中,如果第一个表达式为 true (非 0),则第二个表达式不会被执行。

代码分析:

  1. '- -x': 首先执行自减运算符,x 变为 0。
  2. 'y++': 由于 '&&' 运算符后面的表达式为 0 (false),所以 'y++' 不会被执行,y 仍然为 3。
  3. 'z++': 由于 '&&' 运算符后面的表达式为 0 (false),所以 '||' 运算符后面的表达式会被执行,z 变为 4。

因此,最终输出结果为:x = 0,y = 3,z = 4。

C++ 运算符优先级及短路求值:- -x && y++ || z++ 解释

原文地址: https://www.cveoy.top/t/topic/oCGl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录