C 速查手冊

3.8 指派運算子

C 語言最基本的指派運算子為單一個等號 = ,這是用來將等號右邊的值拷貝給給左邊的變數資料。等號也可以跟其他運算子 (operator) 合用,會直接將結果儲存到原變數 (variable) 之中,如下列表

運算子功能範例
=指派a = b
+=相加同時指派a += b
-=相減同時指派a -= b
*=相減同時指派a *= b
/=相除同時指派a /= b
%=取餘數同時指派a %= b
&=位元且同時指派a &= b
|=位元或同時指派a |= b
^=位元互斥或同時指派a ^= b
<<= 位元向左位移同時指派a <<= b
>>= 位元向右位移同時指派a >>= b

可合用指派運算子的有算術運算子位元運算子,以下程式示範算術運算子的部份

#include <stdio.h>

int main(void)
{
    int a = 4;
    int b = 3;
    
    printf("%d\n", a += b);
    printf("%d\n", a -= b);
    printf("%d\n", a *= b);
    printf("%d\n", a /= b);
    printf("%d\n", a %= b);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:assign1.c
    功能:示範算術運算子與指派運算子的合用
    作者:張凱慶 */

編譯後執行,如下

$ gcc assign1.c
$ a.out
7
4
12
4
1
$

第一個 a += b

printf("%d\n", a += b);

變數 a 加上變數 b 的值後,結果變數 a 的值為 7 。然後 a -= b

printf("%d\n", a -= b);

變數 a 減掉變數 b 的值後,結果變數 a 的值為 4 。餘下可類推。

以下程式示範位元運算子的部份

#include <stdio.h>

int main(void)
{
    int a = 0x101;
    int b = 0x10;
    
    printf("%x\n", a <<= b);
    printf("%x\n", a >>= b);
    printf("%x\n", a &= b);
    printf("%x\n", a |= b);
    printf("%x\n", a ^= b);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://kaiching.org/
    檔名:assign2.c
    功能:示範位元運算子與指派運算子的合用
    作者:張凱慶 */

編譯後執行,如下

$ gcc assign2.c
$ a.out
1010000
101
0
10
0
$

同樣的,變數 a 先左移 16 個位元,然後再右移 16 個位元回來,接著與變數 b 做逐位元的且運算,餘下可類推。

上一頁 3.7 sizeof 運算子
回 C 速查手冊首頁
下一頁 3.9 條件運算子
回 C 教材首頁
回程式語言教材首頁