
C++ 速查手冊
4.2 - 遞增、遞減運算
遞增 (increment) 及遞減 (decrement) 為單元運算子 (unary operator) ,也就是說只需要一個運算元即構成運算式,但在運算元有前後的差別
| 運算子 | 功能 | 範例 | 
|---|---|---|
| ++ | 前遞增 | ++a | 
| ++ | 後遞增 | a++ | 
| -- | 前遞減 | --a | 
| -- | 後遞減 | a-- | 
前遞增是先進行遞增,例如
a = 3;
b = 5;
c = a + ++b; // c = 3 + 6
             // a = 3, b = 6變數 b 先遞增,然後才會與變數 a 相加。後遞增則相反,運算式完成後才會做遞增的動作,例如
a = 3;
b = 5;
c = a + b++; // c = 3 + 5
             // a = 3, b = 6同樣的,遞減的前、後之別與遞增雷同,前遞減會在運算式之前遞減,後遞減則是在運算式完成後才遞減。
以下是整數型態做遞增運算的例子
#include <iostream>
  
int main() {
    int a = 1;
    
    std::cout << a++ << std::endl;
    std::cout << ++a << std::endl;
    std::cout << a++ << std::endl;
    std::cout << a << std::endl;
    
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0402_1.cpp
   功能:示範 C++ 的遞增運算
   作者:張凱慶*/編譯後執行,結果如下
| $ g++ u0402_1.cpp | 
| $ ./a.out | 
| 1 | 
| 3 | 
| 3 | 
| 4 | 
| $ | 
以下為整數型態做遞減運算的例子
#include <iostream>
  
int main() {
    int a = 1;
    
    std::cout << a-- << std::endl;
    std::cout << --a << std::endl;
    std::cout << a-- << std::endl;
    std::cout << a << std::endl;
    
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0402_2.cpp
   功能:示範 C++ 的遞減運算
   作者:張凱慶*/編譯後執行,結果如下
| $ g++ u0402_2.cpp | 
| $ ./a.out | 
| 1 | 
| -1 | 
| -1 | 
| -2 | 
| $ | 
以下為浮點數型態做遞增運算的例子
#include <iostream>
  
int main() {
    double a = 1.2;
    
    std::cout << a++ << std::endl;
    std::cout << ++a << std::endl;
    std::cout << a++ << std::endl;
    std::cout << a << std::endl; 
    
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0402_3.cpp
   功能:示範 C++ 的遞增運算
   作者:張凱慶*/編譯後執行,結果如下
| g++ u0402_3.cpp | 
| $ ./a.out | 
| 1.2 | 
| 3.2 | 
| 3.2 | 
| 4.2 | 
| $ | 
以下為浮點數型態做遞減運算的例子
#include <iostream>
  
int main() {
    double a = 1.2;
    
    std::cout << a-- << std::endl;
    std::cout << --a << std::endl;
    std::cout << a-- << std::endl;
    std::cout << a << std::endl; 
    
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0402_4.cpp
   功能:示範 C++ 的遞減運算
   作者:張凱慶*/編譯後執行,結果如下
| $ g++ u0402_4.cpp | 
| $ ./a.out | 
| 1.2 | 
| -0.8 | 
| -0.8 | 
| -1.8 | 
| $ | 
字元型態也可以做遞增及遞減運算,例如我們可依此特性印出 26 個英文小寫字母
#include <iostream>
  
int main() {
    char var = 'a';
    
    while (var <= 'z') {
        std::cout << var++;
    }
    std::cout << std::endl;
    
    var -= 1;
    while (var >= 'a') {
        std::cout << var--;
    }
    std::cout << std::endl;
    
    return 0;
}
/* 《程式語言教學誌》的範例程式
   http://kaiching.org/
   檔名:u0402_5.cpp
   功能:示範 C++ 的遞增遞減運算
   作者:張凱慶*/編譯後執行,結果如下
| $ g++ u0402_5.cpp | 
| $ ./a.out | 
| abcdefghijklmnopqrstuvwxyz | 
| zyxwvutsrqponmlkjihgfedcba | 
| $ | 
相關教學影片
