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 做逐位元的且運算,餘下可類推。