#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
}
以下代码的输出在程序中被作为注释提及,我正在尝试评估此答案的产生方式,但我无法理解。
我只是想知道程序如何计算相对值。
答案 0 :(得分:-2)
感谢pmg,我已更正了原来的答案(我有一个错误)
由于OR运算符(||)的左侧不为零,因此该行不进行其他任何计算。这称为“短路操作员”。在您给出的这个示例中,程序员基本上是在欺骗编译器。如果运算符右边的参数不影响结果,它将不会执行该代码。但是,在这种情况下,增量一直在进行,它们也不会被评估。 这将为m分配“ 1”。 您的输出应为3、2、0、1。