我如何计算输出

How do I calculate the output

#include<stdio.h>
  void main()
  {
     int x=3,y=2,z=0,m;
     m=++x || ++y && ++z;
 printf("\n %d %d %d %d\n",x,y,z,m);  //  4  2  0  1
   } 

以下代码的输出在程序中作为注释提到,我正在尝试评估这个答案是如何得出的,但我无法理解。

我只是想知道程序是如何计算相对值的。

感谢pmg,我更正了我原来的答案(我有一个错误)

因为 OR 运算符 (||) 的左侧不为零,所以它不会计算该行上的任何其他内容。这称为 "short circuit operator"。在你给出的这个例子中,程序员基本上是在欺骗编译器。如果运算符右侧的参数不影响结果,则不会执行该代码。但是在这种情况下,那里有增量,它们也不会被评估。 这会将“1”分配给 m。 你的输出应该是 3, 2, 0, 1.