C 速查手冊

遞增、遞減運算

C 語言的遞增與遞減的功能類似算術運算,但只能施用在單一運算元 (operand) 上,也限於加一或減一,運算子 (operator) 如下列表

運算子功能範例
++前遞增++a
++後遞增a++
--前遞減--a
--後遞減a--

遞增及遞減有前後之別,所謂的前遞增係指在複合的運算式裡會先遞增,然後以遞增後的值帶入複合運算式中進行計算,後遞增則相反,也就是說複合運算式計算完,施用後遞增的運算元才會進行遞增。前、後遞減跟前、後遞增的情況雷同。

基本資料型態 (data type) 都可以做遞增或遞減運算,以下為整數型態做遞增運算的例子

#include <stdio.h>

int main(void)
{
    int a = 1;
    
    printf("%d\n", a++);
    printf("%d\n", ++a);
    printf("%d\n", a++);
    printf("%d\n", a);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:increint.c
    功能:示範整數的遞增運算
    作者:張凱慶 */

編譯後執行,結果如下

$ gcc increint.c
$ a.out
1
3
3
4
$

以下為整數型態做遞減運算的例子

#include <stdio.h>

int main(void)
{
    int a = 1;
    
    printf("%d\n", a--);
    printf("%d\n", --a);
    printf("%d\n", a--);
    printf("%d\n", a);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:decreint.c
    功能:示範整數的遞減運算
    作者:張凱慶 */

編譯後執行,結果如下

$ gcc decreint.c
$ a.out
1
-1
-1
-2
$

以下為浮點數型態做遞增運算的例子

#include <stdio.h>

int main(void)
{
    float a = 1.2;
    
    printf("%f\n", a++);
    printf("%f\n", ++a);
    printf("%f\n", a++);
    printf("%f\n", a);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:increfloat.c
    功能:示範浮點數的遞增運算
    作者:張凱慶 */

編譯後執行,結果如下

$ gcc increfloat.c
$ a.out
1.200000
3.200000
3.200000
4.200000
$

以下為浮點數型態做遞減運算的例子

#include <stdio.h>

int main(void)
{
    float a = 1.2;
    
    printf("%f\n", a--);
    printf("%f\n", --a);
    printf("%f\n", a--);
    printf("%f\n", a);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:decrefloat.c
    功能:示範浮點數的遞減運算
    作者:張凱慶 */

編譯後執行,結果如下

$ gcc decrefloat.c
$ a.out
1.200000
-0.800000
-0.800000
-1.800000
$

字元型態也可以做遞增及遞減運算,例如我們可依此特性印出 26 個英文小寫字母

#include <stdio.h>

int main(void)
{
    char var = 'a';
    
    while (var <= 'z') {
        printf("%c ", var++);
     }
    printf("\n");
    
    var -= 1;
    while (var >= 'a') {
        printf("%c ", var--);
    }
    printf("\n");
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:indecrechar.c
    功能:示範字元的遞增遞減運算
    作者:張凱慶 */

編譯後執行,結果如下

$ gcc indecrechar.c
$ a.out
a b c d e f g h i j k l m n o p q r s t u v w x y z
z y x w v u t s r q p o n m l k j i h g f e d c b a
$

回 C 速查手冊首頁