Skip to main content

4.3 遞增、遞減與複合指定運算子

遞增與遞減運算子

我們很常在迴圈裡用到 i = i+1 這樣的遞增敘述。

int i=1;

while(i<=10)
(
    cout << i << " ";
    i = i+1;  // 遞增 1
}
cout << endl;
1 2 3 4 5 6 7 8 9 10

這種情況可以使用 遞增(increment)運算子 ++ 來處理。

int i=1;

while(i<10)
(
    cout << i << " ";
    i++;  // 遞增 1
}
cout << endl;
1 2 3 4 5 6 7 8 9 10

i++ 就相當於 i=i+1

同樣的 i=i-1; 可以用 遞減(decrement)運算子 -- 來處理。

int i=10;

while(i>0)
(
    cout << i << " ";
    i--;  // 遞減 1
}
cout << endl;
10 9 8 7 6 5 4 3 2 1

複合指定運算子

如果是增減 1 之外的數值,如 i = i+2,則可以用 複合指定(compound assignment)運算子

int i=1;

while(i<10)
(
    cout << i << endl;
    i+=2;  // 遞增 2
}

i+=2 就相當於 i=i+2

常用的複合指定運算子

運算子 範例 相當於
+= i += 2 i = i+2
-= i -= 2 i = i-2
*= i *= 2 i = i*2
/= i /= 2 i = i/2
%= i %= 2 i = i%2

遞增、遞減運算子的評估時機

遞增運算子有兩種使用方式,如果我們要將 變數i 遞增 1。

  • i++
  • ++i

以下兩個程式的執行結果相同。

使用 i++
int i=1;

while(i<10)
(
    cout << i << " ";
    i++;  // 遞增 1
}
cout << endl;
使用 ++i
int i=1;

while(i<10)
(
    cout << i << " ";
    ++i;  // 也是遞增 1
}
cout << endl;

那麼 ++ 放在變數的前面和後面有什麼差別呢?主要在於 先遞增再評估其值 還是 先評估其值再遞增

看了以下這個實例應該就很清楚了。

int i=1;

cout << i++ << endl;  // 1
cout << i << endl;    // 2
cout << ++i << endl;  // 3
cout << i << endl;    // 3