#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 运算符 (||) 的左侧不为零,因此它不会计算该行上的任何其他内容。这称为“短路运算符”。在你给出的这个例子中,程序员基本上是在欺骗编译器。如果运算符右侧的参数不影响结果,则不会执行该代码。然而在这种情况下,那里发生了增量,并且它们也不会被评估。 这会将“1”分配给 m。 你的输出应该是 3, 2, 0, 1。
关于c - 我如何计算输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761965/