我如何计算输出
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.
#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.