逻辑与的优先级比逻辑或高
例子 15-1:
include “stdio.h”
int main()
{
int i = 0;
int j = 0;
int k = 0;
(++i) || (++j && ++k);
printf("%d\n",i);
printf("%d\n",j);
printf("%d\n",k);
return 0;
}
输出结果:
1,0,0
例子分析:(ture && ++i)结果为 1;程序短路了不会再往后面执行,所以后面的程序将不再运行,j,k 都为 0;
例子 15-2:
include “stdio.h”
int g = 0;
int f()
{
printf("In f()...\n");
return g++;
}
int main()
{
if(g || f() && f())
{printf("In if statement",g);
}
printf("int main():%d\n",g);
return 0;
}
输出结果:
In f()…
int main():1
if 语句实际为 if((ture && g) || (f() && f()));
例子 15-3:
include “stdio.h”
int main()
{
printf("%d\n",!0);
printf("%d\n",!1);
printf("%d\n",!100);
printf("%d\n",!-1000);
return 0;
}
输出结果:
1
0
0
0
小结: