運算符的優先次序

前頁 目錄 下頁

在下表中,運算符跟據它們的優先次序排列,最上的優先次序最高。

類別 運算符
括號 ()
單元 ! ++ -- + (單元正號) - (單元負號) (數據類型) (改型運算符)
乘除類 * / %
加減類 + (加) - (減)
關係及等值 < > <= >= == !=
邏輯 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

其中︰

前頁 目錄 下頁