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::endlreturn 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::endlreturn 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
$

相關教學影片

上一頁 4.1 - 算術運算
回 C++ 速查手冊首頁
下一頁 4.3 - 關係運算
回 C++ 教材
回程式語言教材首頁