【面试】【语言基础】运算符优先级

单目运算符优先级最高,但是单目又分为两个级别:

最高优先级

结合性都是L-R

聚组 ()

函数调用 ()

下标引用 []

访问结构成员 .

访问结构指针成员 ->

后缀自增  lexp++

后缀自减 lexp--


第二优先级

结合性都是R-L

逻辑反 !

按位取反 ~

正值 +

负值 -

前缀自增 ++lexp

前缀自减 --lexp

间接访问 *rexp

取地址    &lexp


在这里,通常有人迷惑*p++的结果。因为后缀自增优先级高于间接访问,因此其等效于*(p++)。这里因为优先级上有差异,因此不必考虑结合性。

示例:

char text[32] = "XYBCDCBABABA";
char* p1 = text;

cout << *p1++ << *++p1 << ++*p1 << endl;



第三优先级

乘法 *

除法 /

整数求余 %


第四优先级

加法 +

减法 -


第五优先级

移位运算符 >> <<


第六优先级

关系运算符 > >= < <=


第七优先级

关系运算符 == !=


示例:

cout << (1 == 6 >= 5) << endl;        结果输出1


第八优先级

位运算 & ^ |


第九优先级

逻辑运算符 && || (&& 大于 ||)


第十优先级

条件运算符

? "


第十一优先级

赋值关系,包括复合赋值


第十二优先级

逗号 ,


参考资料

1. C和指针 第五章

猜你喜欢

转载自blog.csdn.net/zamely/article/details/80690243