天天看點

運算符優先級 - C++運算符優先級 - C++18個優先級組

運算符優先級 - C++

  • a & b != 0

    實際上被解釋為

    a & (b != 0)

    !=

    優先級高于

    &

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	cout << "a & b != 0 : " << (1 & 2 != 0) << endl;
	cout << "a & b != 0 : " << ((1 & 2) != 0) << endl;
}
           
運算符優先級 - C++運算符優先級 - C++18個優先級組
  • r = a << 4 + 1

    實際上被解釋為

    r = a << (4 + 1)

    +

    優先級高于

    <<

#include <iostream>
using namespace std;

int main(void) {
	cout << "r = a << 4 + 1 : " << (8 << 4 + 1) << endl;
	cout << "r = a << 4 + 1 : " << ((8 << 4) + 1) << endl;
}
           
運算符優先級 - C++運算符優先級 - C++18個優先級組

18個優先級組

優先級第1組 運算符 結合性 含義
第1組

::

作用域解析運算符
第2組

(表達式)

分組

()

L-R 從左到右 函數調用

()

值構造,即type(expr)

[]

數組下标

->

間接成員運算符

.

直接成員運算符

const_cast

專用的類型轉換

dynamic_cast

專用的類型轉換

reinterpret_cast

專用的類型轉換

static_cast

專用的類型轉換

typeid

類型辨別

++

加1運算,字尾

--

減1運算,字尾
第3組

!

R-L 邏輯非

~

位非

+

一進制加号(正号)

-

一進制減号(負号)

++

加1運算,字首

--

減1運算,字首

&

位址

*

解除引用(間接值)

()

類型轉換,即(type)expr

sizeof

長度,以位元組為機關

new

動态配置設定記憶體

new[]

動态配置設定數組

delete

動态釋放記憶體

delete[]

動态釋放數組
第4組

.*

L-R 成員解除引用

->*

間接成員解除引用
第5組

*

L-R

/

^

模(餘數)
第6組

*

L-R

-

第7組

<<

L-R 左移

>>

右移
第8組

<

L-R 小于

<=

小于或等于

>=

大于或等于

>

大于
第9組

==

L-R 等于

!=

不等于
第10組

&

L-R 按位 AND
第11組

^

L-R 按位 XOF(異或)
第12組

|

L-R 按位 OR
第13組

&&

L-R 邏輯 AND
第14組

||

L-R 邏輯 OR
第15組

:?

R-L 條件
第16組

=

R-L 簡單指派

*=

乘并指派

/=

除并指派

%=

求模并指派

+=

加并指派

-=

減并指派

&=

按位 AND 并指派

^=

按位 XOF 并指派

|=

按位 OR 并指派

<<=

左移并指派

>>=

右移并指派
第17組

throw

L-R 引發異常
第18組

L-R 将兩個表達式合成一個