C++运算符的优先级

2023-04-12


优先级


操作符


描述


例子


结合性


1


()


[]


->


.


::


++


--


调节优先级的括号操作符


数组下标访问操作符


通过指向对象的指针访问成员的操作符


通过对象本身访问成员的操作符


作用域操作符


后置自增操作符


后置自减操作符


(a + b) / 4;


array[4] = 2;


ptr->age = 34;


obj.age = 34;


Class::age = 2;


for( i = 0; i < 10; i++ ) ...


for( i = 10; i > 0; i-- ) ...


从左到右


2


!


~


++


--


-


+


*


&


(type)


sizeof


逻辑取反操作符


按位取反(按位取补)


前置自增操作符


前置自减操作符


一元取负操作符


一元取正操作符


解引用操作符


取地址操作符


类型转换操作符


返回对象占用的字节数操作符


if( !done ) ...


flags = ~flags;


for( i = 0; i < 10; ++i ) ...


for( i = 10; i > 0; --i ) ...


int i = -1;


int i = +1;


data = *ptr;


address = &obj;


int i = (int) floatNum;


int size = sizeof(floatNum);


从右到左


3


->*


.*


在指针上通过指向成员的指针访问成员的操作符


在对象上通过指向成员的指针访问成员的操作符


ptr->*var = 24;


obj.*var = 24;


从左到右


4


*


/


%


乘法操作符


除法操作符


取余数操作符


int i = 2 * 4;


float f = 10 / 3;


int rem = 4 % 3;


从左到右


5


+


-


加法操作符


减法操作符


int i = 2 + 3;


int i = 5 - 1;


从左到右


6


<<


>>


按位左移操作符


按位右移操作符


int flags = 33 << 1;


int flags = 33 >> 1;


从左到右


7


<


<=


>


>=


小于比较操作符


小于或等于比较操作符


大于比较操作符


大于或等于比较操作符


if( i < 42 ) ...


if( i <= 42 ) ...


if( i > 42 ) ...


if( i >= 42 ) ...


从左到右


8


==


!=


等于比较操作符


不等于比较操作符


if( i == 42 ) ...


if( i != 42 ) ...


从左到右


9


&


按位与操作符


flags = flags & 42;


从左到右


10


^


按位异或操作符


flags = flags ^ 42;


从左到右


11


|


按位或操作符


flags = flags | 42;


从左到右


12


&&


逻辑与操作符


if( conditionA && conditionB ) ...


从左到右


13


||


逻辑或操作符


if( conditionA || conditionB ) ...


从左到右


14


? :


三元条件操作符


int i = (a > b) ? a : b;


从右到左


15


=


+=


-=


*=


/=


%=


&=


^=


|=


<<=


>>=


赋值操作符


复合赋值操作符(加法)


复合赋值操作符(减法)


复合赋值操作符(乘法)


复合赋值操作符(除法)


复合赋值操作符(取余)


复合赋值操作符(按位与)


复合赋值操作符(按位异或)


复合赋值操作符(按位或)


复合赋值操作符(按位左移)


复合赋值操作符(按位右移)


int a = b;


a += 3;


b -= 4;


a *= 5;


a /= 2;


a %= 3;


flags &= new_flags;


flags ^= new_flags;


flags |= new_flags;


flags <<= 2;


flags >>= 2;


从右到左


16


,


逗号操作符


for( i = 0, j = 0; i < 10; i++, j++ ) ...


从左到右


本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com