C++ 快速導覽 - 遞增、遞減運算

遞增 (increment) 及遞減 (decrement) 為單元運算子 (unary operator) ,也就是說只需要一個運算元 (operand) 即構成運算式 (expression) ,但在運算元有前後的差別

運算子功能範例
++前遞增++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(void)
{
    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://pydoing.blogspot.com/
    檔名:increint.cpp
    功能:示範遞增運算子
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



以下為整數型態做遞減運算的例子
#include <iostream>
 
int main(void)
{
    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://pydoing.blogspot.com/
    檔名:decreint.cpp
    功能:示範遞減運算子
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



以下為浮點數型態做遞增運算的例子
#include <iostream>
 
int main(void)
{
    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://pydoing.blogspot.com/
    檔名:increfloat.cpp
    功能:示範遞增運算子
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



以下為浮點數型態做遞減運算的例子
#include <iostream>
 
int main(void)
{
    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://pydoing.blogspot.com/
    檔名:decrefloat.cpp
    功能:示範遞減運算子
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



字元型態也可以做遞增及遞減運算,例如我們可依此特性印出 26 個英文小寫字母
#include <iostream>
 
int main(void)
{
    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://pydoing.blogspot.com/
    檔名:increchar.cpp
    功能:示範遞減運算子
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



中英文術語對照
遞增increment
遞減decrement
單元運算子unary operator
運算元operand
運算式expression


您可以繼續參考
運算式
型態轉換


相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁


參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial

C++ Primer, Fourth Edition, Stanley B. Lippman...


本文於 2013 年 1 月更新

沒有留言: