举个例子吧
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x, y, z;
y = z = (y = z = 2, x = 1);
//逗号表达式,从左到右顺序执行,最好一个作为返回值,所以x=y=z=1
printf(“x=%d,y=%d,z=%d\n”, x, y, z);
–x&&++y || --z;
/先进行 --x得 x=0为假,由于是逻辑与,所以++y跳过,则 0||–z,由于逻
辑或,运算继续,得 x=0,y=1,z=0/
printf(“x=%d,y=%d,z=%d\n”, x, y, z);
++x&&–y | z–;
/按位或优先级比逻辑与高,所以实际为++x&&(–y|z–),左边 x=1为真,
但是按位或不影响想 y,z的值,所以 y=0,z=-1/
printf(“x=%d,y=%d,z=%d\n”, x, y, z);
x-- || --y&&z++;
/同样逻辑与优先级比逻辑或高,所以为 x–||(–y&&z++),但是运算还是从左
到右,x=1为真(此处应是用 x来执行,最后执行 x–),所以右边不执行,
y与 z的值不变,y=0,z=-1/
printf(“x=%d,y=%d,z=%d\n”, x, y, z);
++x&–y || ++z;
/按位与优先级比逻辑或高,执行 x=1,y=-1,进行按位与运算,结果为 1,
为真,所以 z不执行,依旧为 z=-1/
printf(“x=%d,y=%d,z=%d\n”, x, y, z);
system(“pause”);
return 0;
}
1.逻辑运算符中优先级!>&&>||
2.位运算符优先级>逻辑运算符
3.按位与&(位运算时,相同为1,不同为0)
按位或|(位运算时,有1为1,全0为0)