最后几行是什么意思?
a=0;
b=0;
c=0;
a && b++;
c || b--;
你能改变这个问题来用更有趣的例子来解释吗?
对于您给出的示例:如果a
非零,则递增b
;如果c
为零,则递减b
。
由于短路评估的规则,即。
你也可以用一个函数作为右边的参数来测试它;printf
将对此有好处,因为它为我们提供了易于观察的输出。
#include <stdio.h>
int main()
{
if (0 && printf("RHS of 0-and\n"))
{
}
if (1 && printf("RHS of 1-and\n"))
{
}
if (0 || printf("RHS of 0-or\n"))
{
}
if (1 || printf("RHS of 1-or\n"))
{
}
return 0;
}
输出:
RHS of 1-and
RHS of 0-or
a && b++; is equivalent to: if(a) b++;
c || b--; is equivalent to: if(!c) b--;
但是写这种表达方式是没有意义的。它不会编译成更好的代码,并且在几乎所有情况下都不太可读,即使它看起来更短。