最后一行是什么意思?
a=0;
b=0;
c=0;
a && b++;
c || b--;
你可以用更有趣的例子来解释这个问题吗?
答案 0 :(得分:10)
对于您提供的示例:如果a
非零,则增加b
;如果c
为零,则递减b
。
由于short-circuiting evaluation的规则,即。
您也可以使用函数作为右侧参数来测试它; 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
答案 1 :(得分:1)
a && b++; is equivalent to: if(a) b++;
c || b--; is equivalent to: if(!c) b--;
但写这些表达没有意义。它不能编译为更好的代码,并且几乎在所有情况下都不太可读,即使它看起来更短。