逻辑与的优先级比逻辑或高
image.png
image.png
例子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()));

image.png

例子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

小结:image.png


YingLi
6 声望5 粉丝

From zero to hero.