在下表中,運算符跟據它們的優先次序排列,最上的優先次序最高。
類別 | 運算符 |
括號 | () |
單元 | ! ++ -- + (單元正號) - (單元負號) (數據類型) (改型運算符) |
乘除類 | * / % |
加減類 | + (加) - (減) |
關係及等值 | < > <= >= == != |
邏輯 AND | && |
邏輯 OR | || |
條件 | ?: |
賦值 | = += -= *= /= %= |
在上表中,同一類別的運算符有相同的優先次序。
單元(++ 和 -- 除外)、條件和賦值運算符均是由右至左操作的。對於這些運算符來說,同一優先次序的運算符會由右至左計算。
其他類別的運算符(++ 和 --除外)均是由左至右操作的。對於這些運算符來說,同一優先次序的運算符會由左至右計算。
參看以下程序,作為例子︰
#include <iostream.h> main() { float a = 1.1, b = 1.2, c = 1.3, d = 1.4, e = 0, x = 2, y; x += y = 4.7 + (a == b && c < d ? 3.2 : 1.4) - 7 * - ! e++; // e = 1, x = 15.1, y = 13.1 cout << "e=" << e << ", x=" << x << ", y=" << y << endl; return 0; } |
下面展示了紅色的語句如何被執行︰
|
x += | y = |
4.7 + |
( |
a == b |
&& |
c < d |
? 3.2 : 1.4) |
- |
7 * |
- |
! |
e++ |
(1) |
x += | y = |
4.7 + |
( |
a == b |
&& |
1.3 < 1.4 |
? 3.2 : 1.4) |
- |
7 * |
- |
! |
e++ |
(2) |
x += |
y = |
4.7 + |
( |
1.1 == 1.2 |
&& |
1 |
? 3.2 : 1.4) |
- |
7 * |
- |
! |
e++ |
(3) |
x += |
y = |
4.7 + |
( |
0 |
&& |
1 |
? 3.2 : 1.4) |
- |
7 * |
- |
! |
e++ |
(4) |
x += | y = |
4.7 + |
( |
0 |
? 3.2 : 1.4) |
- |
7 * |
- |
! |
e++ |
||
(5) |
x += | y = |
4.7 + |
1.4 |
- |
7 * |
- |
! |
e++ |
||||
(6) |
x += |
y = |
4.7 + |
1.4 |
- |
7 * |
- |
! |
0 |
||||
(7) |
x += |
y = |
4.7 + |
1.4 |
- |
7 * |
- |
1 |
|||||
(8) |
x += |
y = |
4.7 + |
1.4 |
- |
7 * |
(-1) |
||||||
(9) |
x += |
y = |
4.7 + |
1.4 |
- |
(-7) |
|||||||
(10) |
x += |
y = |
6.1 |
- |
(-7) |
||||||||
(11) |
x += |
y = |
13.1 |
||||||||||
(12) |
x += |
13.1 |
|||||||||||
(13) |
15.1 |
其中︰