Skip to main content

2.3 運算子與運算優先順序

在掌握了基本輸入、輸出之後,我們已經具備「將資料讀進電腦」,「將處理後資料送回外界」的能力,接下來重點就是中間的「處理」,也就是運算的部分。

首先我們要認識兩個名詞:

  • 運算元(operands)
  • 運算子(operator)

以 2+3 為例,23 都是運算元,+ 是運算子。

我們可以把運算子想成是「運算符號」,運算元則是「運算的對象」。

指定(assign)運算子

在 C++ 中,= 不是 等於(equal) 而是 指定(assign)

a = 3 是「把 3 指定給 a 這個變數」,而非表示「a 和 3 的值是相等的」

執行完這行後,變數 a 的值就會變成 3。

a = 3;
cout << a; // 3

運算子 = 會將其右側的運算結果,指定到左側的儲存空間。

例如 v = 3+5 是把 3+5 的運算結果指定給變數 v。

也就是說如果 = 的右側不是單純的值而是運算式,要先完成運算後,再將運算結果指定給其左側的變數。 所以,執行完這行後,變數 v 的值就會變成 8。

v = 3+5;
cout << v; // 8

想想看,以下這段程式執行後的輸出為何?

int a;
a = 3;
a = a + 2;

cout << a << endl;

其中第 2 行是把 3 指定給 a,所以執行後 a 的值為 3。

第 3 行因為 = 的右側是運算式 a + 2,因此要先完成這個運算,目前 a 的值是 3,所以 a+2 的運算結果是 5。

接著可以想像第3行變成 a = 5,所以整行執行後,a 的值為 5。

千萬不要用數學符號的角度把 = 當成「等於」去看待 a = a + 2,這行敘述,否則你會看不懂它。

練習

以下這段程式執行後,a 和 b 的值各為何?

int a = 3;
int b = 5;

a = a + b;
b = a - b;
a = a - b;

cout << "a = " << a << endl;
cout << "b = " << b << endl;

算術(arithmetic)運算子

加法、減法、乘法

    +-*

除法

-/*

取餘數

%

關係(Relational)運算子

==, !=, >, <, >=, <=

邏輯(logical)運算子

&&, ||, !

位元(bitwise)運算子

&, |, ^, ~, >>, <<

其他的運算子