C 語 言 --- 操 作 符 2
- 移 位 操 作 符
- 定 義
- 原 碼 補 碼 和 反 碼
- 左 移(<<)
- 右 移(>>)
- 算 術 右 移
- 邏 輯 右 移
- 按 位 與、按 位 或、和 按 位 異 或
- 按 位 與
- 按 位 或
- 按 位 異 或
- 邏 輯 反 操 作
- 負 值 操 作
- 按 位 取 反
- 邏 輯 與
- 邏 輯 或
- 三 目 操 作 符
- 逗 號 表 達 式
- 逗 號 表 達 式
- 總結
💻作 者 簡 介:曾 與 你 一 樣 迷 茫,現 以 經 驗 助 你 入 門 C 語 言
💡個 人 主 頁:@笑口常開xpr 的 個 人 主 頁
📚系 列 專 欄:C 啟 新 程
?代 碼 趣 語:最 開 始 的 90% 代 碼 占 用 了 開 始 的 90% 的 開 發 時 間;剩 下 10% 代 碼 同 樣 需 要 90% 的 開 發 時 間。
💪代 碼 千 行,始 于 堅 持,每 日 敲 碼,進 階 編 程 之 路。
📦gitee 鏈 接:gitee
???????在 編 程 的 世 界 里,每 一 行 代 碼 都 可 能 隱 藏 著 無 限 的 可 能 性 。你 是 否 想 過,一 個 小 小 的 程 序 究 竟 能 改 變 什 么?它 可 以 是 解 決 復 雜 問 題 的 工 具 ,也 可 以 是 實 現 夢 想 的 橋 梁。今 天,就 讓 我 們 一 起 走 進 C 語 言 操 作 符 的 世 界,探 索 它 的 無 限 潛 力。
移 位 操 作 符
定 義
???????在 C 語 言 里,移 位 操 作 符 用 于 對 二 進 制 位 進 行 移 動 操 作,主 要 有 左 移(<<)和 右 移(>>)兩 種。
原 碼 補 碼 和 反 碼
在 計 算 機 中,原 碼、反 碼 和 補 碼 是 用 于 表 示 有 符 號 整 數 的 三 種 編 碼 方 式
原 碼
?????????原 碼 是 一 種 最 簡 單 的 機 器 數 表 示 法。最 高 位 作 為 符 號 位,0 表 示 正 數,1 表 示 負 數,其 余 位 表 示 數 值 的 絕 對 值。
例 如,在 8 位 二 進 制 表 示 中:
+5 的 原 碼 是 0000 0101。
-5 的 原 碼 是 1000 0101。
反碼
?????????正 數 的 反 碼 和 原 碼 相 同;負 數 的 反 碼 是 在 原 碼 的 基 礎 上,符 號 位 不 變,其 余 位 按 位 取 反。
例 如,在 8 位 二 進 制 表 示 中:
+5 的 原 碼 是 0000 0101,反 碼 同 樣 是 0000 0101。
-5 的 原 碼 是 1000 0101,反 碼 則 是 1111 1010。
補 碼
正 數 的 補 碼 和 原 碼 相 同;負 數 的 補 碼 是 在 反 碼 的 基 礎 上 加 1。
例 如,在 8 位 二 進 制 表 示 中 :
+5 的 原 碼 是 0000 0101,補 碼 同 樣 是 0000 0101。
-5 的 原 碼 是 1000 0101,反 碼 是 1111 1010,補 碼 是 1111 1011。
使 用 補 碼 的 原 因
?????????內 存 中 存 儲 補 碼 的 二 進 制。使 用 補 碼 能 夠 簡 化 計 算 機 的 運 算,因 為 可 以 把 減 法 運 算 轉 化 為 加 法 運 算,進 而 減 少 計 算 機硬 件 的 復 雜 度。
總 結
正 數:
原 碼 反 碼 和 補 碼 都 是 它 本 身。
負數:
補 碼 —> 反 碼 的 兩 種 方 式:
反 碼 和 補 碼 都 是 符 號 位 不 變,也 就 是 第 1 位 不 變。
左 移(<<)
???????將 操 作 數 的 二 進 制 位 向 左 移 動 指 定 的 位 數,右 邊 空 出 的 位 用 0 填 充。
下 面 展 示
代碼示例
。
#include <stdio.h>
int main()
{int num1 = 5; //整型是4個字節,所以是32個比特位//00000000000000000000000000000101 --- 5的原碼//00000000000000000000000000000101 --- 5的反碼//00000000000000000000000000000101 --- 5的補碼int result1 = num1 << 1; //左移1位,結果為10//00000000000000000000000000001010 --- 左邊去掉1個0,右邊補1個0int num2 = -5;//10000000000000000000000000000101 --- -5的原碼//11111111111111111111111111111010 --- -5的反碼//11111111111111111111111111111011 --- -5的補碼int result2 = num2 << 1;//左移1位,結果為-10//11111111111111111111111111110110 --- 左邊去掉1個1,右邊補1個0//10000000000000000000000000001001 --- 取反//10000000000000000000000000001010 --- +1,結果為-10int num3 = -5;//10000000000000000000000000000101 --- -5的原碼//11111111111111111111111111111010 --- -5的反碼//11111111111111111111111111111011 --- -5的補碼int result3 = num3 << 2;//左移2位,結果為-20//11111111111111111111111111101100 --- 左邊去掉2個1,右邊補2個0//10000000000000000000000000010011 --- 取反//10000000000000000000000000010100 --- +1,結果為-20printf(" 5左移1位是:%3d\n", result1);printf("-5左移1位是:%3d\n", result2);printf("-5左移2位是:%3d\n", result3);return 0;
}
運 行 結 果 是 :
總 結:
?????????左 移 n 位 相 當 于 乘 以 2 的 n 次 方。
?????????將 操 作 數 的 二 進 制 位 向 左 移 動 指 定 的 位 數,如 果 是 正 數,左 邊 去 掉 幾 個 0,如 果 是 負 數,左 邊 去 掉 幾 個 1,右 邊 空 出 的 位 用 0 填 充。
右 移(>>)
?????????把 操 作 數 的 二 進 制 位 向 右 移 動 指 定 的 位 數。右 移 分 為 邏 輯 右 移 和 算 術 右 移:
邏 輯 右 移:左 邊 空 出 的 位 用 0 填 充。
算 術 右 移:左 邊 空 出 的 位 用 原 符 號 位 填 充。
?????????對 于 有 符 號 整 數 的 右 移 操 作 采 用 的 是 算 術 右 移。無 符 號 整 數 的 右 移 操 作 采 用 的 是 邏 輯 右 移。
算 術 右 移
有 符 號 數 右 移 許 多 次 后,正 數 變 為 0,負 數 成 -1。
只 有 -1 的 補 碼 全 是 1。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = -1;//只有-1的補碼全是1;//10000000000000000000000000000001 - 原碼//11111111111111111111111111111110 - 反碼//11111111111111111111111111111111 - 補碼int b = a >> 1;//11111111111111111111111111111111 - 補碼//10000000000000000000000000000000 - //10000000000000000000000000000001 - 原碼int c = 1;//00000000000000000000000000000001 - 原碼int d = c >> 1;//00000000000000000000000000000000 - 補碼printf("%d\n", b);printf("%d\n", d);return 0;
}
邏 輯 右 移
?????????在 邏 輯 右 移 中,將 二 進 制 數 整 體 向 右 移 動 指 定 的 位 數,右 邊 移 出 的 位 直 接 舍 棄,而 左 邊 空 出 的 位 用 0 來 填 充。
特 點
- 數 值 縮 小:每 右 移 一 位,相 當 于 該 無 符 號 數 除 以 2 并 向 下 取 整。不 斷 右 移,數 值 會 逐 漸 變 小,最 終 變 為 0。
- 不 改 變 符 號 性 質:由 于 無 符 號 數 本 身 就 不 存 在 正 負 之 分,右 移 操 作 不 會 改 變 其 無 符 號 的 性 質。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{unsigned int num = 100;//00000000000000000000000001100010//32+64int right = num >> 4;//00000000000000000000000000000110 --- 6printf("%u\n", right);return 0;
}
注 意 事 項
操 作 數 類 型
?????????邏 輯 右 移 主 要 用 于 無 符 號 整 數。如 果 操 作 數 是 有 符 號 整 數,右 移 操 作 可 能 是 算 術 右 移( 高 位 補 符 號 位),具 體 取 決 于 編 譯 器 和 平 臺。
右 移 位 數
???????右 移 的 位 數 不 能 超 過 操 作 數 的 位 數,否 則 結 果 是 未 定 義 的。例 如,對 于 32 位 無 符 號 整 數,右 移 位 數 應 在 0 到 31 之 間。
按 位 與、按 位 或、和 按 位 異 或
按 位 與
定 義
在 C 語 言 里,按 位 與 是 一 種 基 本 的 位 操 作,使 用 & 運 算 符 來 實 現。
原 理
?????????按 位 與 操 作 會 對 兩 個 操 作 數 的 對 應 二 進 制 位 進 行 逐 位 比 較,當 且 僅 當 兩 個 對 應 位 都 為 1 時,結 果 的 該 位 才 為 1,否 則 為 0。
口 訣
同 為 1 則 1,否 則 為 0
解 釋
?????????在 按 位 與 操 作 里,對 兩 個 操 作 數 的 每 一 對 對 應 的 二 進 制 位 進 行 比 較。只 有 當 這 兩 個 對 應 的 二 進 制 位 都 為 1 時,結 果 的 對 應 位 才 會 是 1;只 要 有 一 個 位 是 0,結 果 的 對 應 位 就 為 0。
真 值 表:
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011 --- 補碼int b = -5;//10000000000000000000000000000101 --- 原碼//11111111111111111111111111111010 --- 反碼//11111111111111111111111111111011 --- 補碼int c = a & b;//a和b的補碼//00000000000000000000000000000011 --- a的補碼//11111111111111111111111111111011 --- b的補碼//00000000000000000000000000000011 --- a & bprintf("%d\n", c);return 0;
}
注 意
?????????在 進 行 按 位 與 運 算 完 之 后,如 果 最 高 位 為 1,則 需 要 將 補 碼 轉 化 為 原 碼。如 果 最 高 位 為 0,則 不 需 要 轉 化 為 原 碼,直 接 化 成 十 進 制 即 可。
按 位 或
定 義
在 C 語 言 中,按 位 或 是 一 種 基 本 的 位 操 作,使 用 | 運 算 符 實 現。
原 理
?????????按 位 或 操 作 會 對 兩 個 操 作 數 的 對 應 二 進 制 位 進 行 逐 位 比 較,只 要 兩 個 對 應 位 中 有 一 個 為 1 ,結 果 的 該 位 就 為 1;只 有 當 兩 個 對 應 位 都 為 0 時,結 果 的 該 位 才 為 0。
口 訣
有 1 則 1,全 0 為 0
口 訣 解 釋
?????????按 位 或 操 作 是 對 兩 個 操 作 數 的 每 一 對 對 應 的 二 進 制 位 進 行 比 較。在 比 較 過 程 中,只 要 這 兩 個 對 應 的 二 進 制 位 中 有 一 個 是 1,那 么 結 果 的 對 應 位 就 為 1;只 有 當 這 兩 個 對 應 的 二 進 制 位 都 為 0 時,結 果 的 對 應 位 才 為 0。
真 值 表:
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011int b = -5;//10000000000000000000000000000101 --- b的原碼//11111111111111111111111111111010 --- b的反碼//11111111111111111111111111111011 --- b的補碼int c = a | b;//00000000000000000000000000000011 --- a的反碼//11111111111111111111111111111011 --- b的補碼//11111111111111111111111111111011 --- a|b//10000000000000000000000000000100 --- 反碼//10000000000000000000000000000101 --- 原碼 --- -5printf("%d\n", c);return 0;
}
按 位 異 或
定 義
在 C 語 言 里,按 位 異 或 是 一 種 常 用 的 位 操 作,借 助 ^ 運 算 符 來 實 現。
原 理
?????????按 位 異 或 操 作 會 對 兩 個 操 作 數 的 對 應 二 進 制 位 進 行 逐 位 比 較,當 兩 個 對 應 位 不 同 時,結 果 的 該 位 為 1;當 兩 個 對 應 位 相 同 時,結 果 的 該 位 為 0。
口 訣
相 同 為 0,不 同 為 1
口 訣 解 釋
?????????在 按 位 異 或 操 作 中,會 對 兩 個 操 作 數 對 應 的 每 一 對 二 進 制 位 進 行 比 較。當 這 兩 個 對 應 的 二 進 制 位 數 值 一 樣 時,結 果 的 對 應 位 就 為 0; 當 這 兩 個 對 應 的 二 進 制 位 數 值 不 一 樣 時,結 果 的 對 應 位 則 為 1。
真 值 表:
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011 --- a的補碼int b = -5;//10000000000000000000000000000101 --- b的原碼//11111111111111111111111111111010 --- b的反碼//11111111111111111111111111111011 --- b的補碼int c = a ^ b;//00000000000000000000000000000011 --- a的補碼//11111111111111111111111111111011 --- b的補碼//11111111111111111111111111111000 --- a ^ b//10000000000000000000000000000111 --- 反碼//10000000000000000000000000001000 --- 原碼 --- -8printf("%d\n", c);return 0;
}
使 用 按 位 異 或 交 換 兩 個 數 的 值,不 使 用 臨 時 變 量
下 面 展 示
代 碼 示 例
。
#include <stdio.h>
int main()
{int a = 10;int b = 20;scanf("%d %d", &a, &b);a = a ^ b;b = a ^ b;a = a ^ b;printf("%d %d\n", a, b);return 0;
}
邏 輯 反 操 作
定 義
?????????在 C 語 言 里,邏 輯 反 操 作 也 被 叫 做 邏 輯 非 操 作,使 用 邏 輯 非 運 算 符 ! 來 實 現。
原 理
?????????邏 輯 反 操 作 是 一 種 單 目 操 作 符,它 作 用 于 一 個 布 爾 值(在 C 語 言 里,非 零 值 表 示 真,零 值 表 示 假),把 真 變 為 假,把 假 變 為 真。具 體 規 則 如下:
若 操 作 數 為 非 零 值(即 真),邏 輯 反 操 作 的 結 果 為 0(即 假)。
若 操 作 數 為 0(即 假),邏 輯 反 操 作 的 結 果 為 1(即 真)。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int flag = 0;printf("%d\n", flag);printf("%d\n", !flag);return 0;
}
負 值 操 作
減 法 運 算 符
?????????“-” 操 作 符 可 用 于 兩 個 數 值 間 的 減 法 運 算。它 能 處 理 整 數、浮 點 數 等 不 同 類 型 的 數 據。
下 面 展 示
代 碼 示 例
。
#include <stdio.h>int main()
{int a = 10;int b = 5;int result = a - b;printf("%d\n", result);return 0;
}
負 號 運 算 符
“-” 操 作 符 還 能 作 為 負 號 運 算 符,用 來 改 變 一 個 數 值 的 正 負 性。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 10;printf("%d\n", a);printf("%d\n", -a);
}
復 合 賦 值 運 算 符
?????????“-” 可 以 和 “=” 結 合 形 成 復 合 賦 值 運 算 符 “ -= ”,其 作 用 是 從 變 量 里 減 去 一 個 值,再 把 結 果 賦 給 該 變 量。
下 面 展 示
代 碼 示 例
。
#include <stdio.h>int main()
{int num = 10;num -= 3; // 等價于num = num - 3;printf("%d\n", num);return 0;
}
按 位 取 反
定 義
?????????在 C 語 言 里,按 位 取 反 操 作 符 是 ~,它 屬 于 單 目 操 作 符,也 就 是 只 需 一 個 操 作 數。該 操 作 符 會 對 操 作 數 的 每 一 位(包 含 符 號 位)。 進 行 取 反 操 作,即 把 0 變 為 1,把 1 變 為 0。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 10;//00000000000000000000000000001010 --- a的補碼//11111111111111111111111111110101 --- 按位取反//10000000000000000000000000001010 --- 取反//10000000000000000000000000001011 --- 原碼 --- -11printf("%d\n", ~a);return 0;
}
邏 輯 與
定 義
?????????在 C 語 言 中,邏 輯 與 操 作 是 一 種 布 爾 運 算,屬 于 二 元 運 算 符,也 就 是 需 要 兩 個 操 作 數。使 用 && 運 算 符 來 實 現。
原 理
?????????邏 輯 與 操 作 用 于 對 兩 個 布 爾 表 達 式 進 行 運 算,只 有 當 兩 個 表 達 式 的 值 都 為 真(在 C 語 言 里,非 零 值 表 示 真,零 值 表 示 假)時,整 個 邏 輯 與 表 達 式 的 結 果 才 為 真;只 要 有 一 個 表 達 式 的 值 為 假,結 果 就 為 假。
真 值 表
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 0;int b = 5;if (a && b){printf("hehe\n");}return 0;
}
結 果 解 釋
?????????這 段 代 碼 中,因 變 量 a 為 0、b 為 5,二 者 按 位 與(&)結 果 在 邏 輯 判 斷 中 為 假,致 使 if 條 件 不 成 立,其 語 句 塊 代 碼 不 執 行,程 序 無 輸 出。
短 路 特 性
?????????邏 輯 與 運 算 符 具 有 短 路 特 性。也 就 是 說,當 計 算 表 達 式 1 && 表 達 式 2 時,如 果 表 達 式 1 的 值 為 假,那 么 就 不 會 再 計 算 表 達 式 2,因 為 無 論 表 達 式 2 的 值 是 什 么,整 個 邏 輯 與 表 達 式 的 結 果 都 已 經 確 定 為 假。
下 面 展 示
代 碼 示 例
。
#include <stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ && ++b && d++;//左邊為假,右邊不計算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);a = 1, b = 2, c = 3, d = 4;i = ++a && ++b && d++;//一直計算到真printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);return 0;
}
邏 輯 或
定 義
?????????在 C 語 言 中,邏 輯 或 操 作 是 一 種 布 爾 運 算,屬 于 二 元 運 算 符,也 就 是 需 要 兩 個 操 作 數。使 用 || 運 算 符 來 實 現。
原 理
?????????邏 輯 或 操 作 用 于 對 兩 個 布 爾 表 達 式 進 行 運 算,只 要 兩 個 表 達 式 中 有 一 個 的 值 為 真(在 C 語 言 中,非 零 值 代 表 真,零 值 代 表 假),整 個 邏 輯 或 表 達 式 的 結 果 就 為 真;只 有 當 兩 個 表 達 式 的 值 都 為 假 時,結 果 才 為 假。
真 值 表
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 0;int b = 5;if (a || b){printf("hehe\n");}return 0;
}
結 果 解 釋
?????????這 段 代 碼 中,因 變 量 a 為 0、b 為 5,二 者 邏 輯 或(||)結 果 在 邏 輯 判 斷 中 為 真,if 條 件 成 立,其 語 句 塊 代 碼 執 行,程 序 有 輸 出。
短路特性
?????????邏 輯 或 運 算 符 具 有 短 路 特 性。也 就 是 說,當 計 算 表 達 式 1 | | 表 達 式 2 時,如 果 表 達 式 1 的 值 為 真,那 么 就 不 會 再 計 算 表 達 式 2,因 為 無 論 表 達 式 2 的 值 是 什 么,整 個 邏 輯 或 表 達 式 的 結 果 都 已 經 確 定 為 真。
下 面 展 示
代 碼 示 例
。
#include <stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ || ++b || d++;//表達式1為假,表達式2為真,后邊不計算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);a = 1, b = 2, c = 3, d = 4;i = ++a || ++b || d++;//左邊為真,右邊不計算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);return 0;
}
總 結
?????????在 邏 輯 與 短 路 特 性 的 表 達 式 中,表 達 式 一 直 計 算 到 真 停 止,如 果 表 達 式 是 假,則 停 止 計 算。在 邏 輯 或 短 路 特 性 的 表 達 式 中,如 果 表 達 式 是 假,則 一 直 計 算,到 真 停 止,后 面 的 表 達 式 不 計 算。
三 目 操 作 符
定 義
?????????在 C 語 言 里,三 目 操 作 符( 也 叫 條 件 操 作 符)是 一 個 較 為 獨 特 的 運 算 符,它 能 實 現 簡 單 的 條 件 判 斷,使 代 碼 更 加 簡 潔。
基 本 語 法
條件表達式 ? 表達式1 : 表達式2
- 條 件 表 達 式:這 是 一 個 布 爾 表 達 式,其 計 算 結 果 要 么 為 真( 非 零 值 ),要 么 為 假( 零 值 )。
- 表 達 式 1:當 條 件 表 達 式 的 結 果 為 真 時,三 目 操 作 符 會 返 回 該 表達 式 的 值。
- 表 達 式 2:當 條 件 表 達 式 的 結 果 為 假 時,三 目 操 作 符 會 返 回 該 表 達 式 的 值。
執 行 流 程
- 首 先 計 算 條 件 表 達 式 的 值。
- 若 條 件 表 達 式 的 值 為 真,整 個 三 目 操 作 符 表 達 式 的 值 就 是 表 達 式 1 的 值。
- 若 條 件 表 達 式 的 值 為 假,整 個 三 目 操 作 符 表 達 式 的 值 就 是 表 達 式 2 的 值。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 0;int b = (a > 5 ? 3 : -3);printf("%d\n", b);return 0;
}
逗 號 表 達 式
定 義
?????????在 C 語 言 中,逗 號 表 達 式 是 一 種 較 為 特 殊 的 表 達 式,它 允 許 將 多 個表 達 式 組 合 在 一 起,按 順 序 依 次 計 算 每 個 子 表 達 式 的 值,最 后 整 個 逗 號 表 達 式 的 值 是 最 后 一 個 子 表 達 式 的 值。
基 本 語 法
表達式1, 表達式2, ..., 表達式n
?????????其 中,表 達 式 1、表 達 式 2 一 直 到 表 達 式 n 是 任 意 合 法 的 C 語 言 表 達 式,它 們 之 間 用 逗 號 分 隔。
執 行 流 程
?????????逗 號 表 達 式 的 執 行 順 序 是 從 左 到 右 依 次 計 算 各 個 子 表 達 式 的 值。也 就 是 說,先 計 算 表 達 式 1,接 著 計 算 表 達 式 2,以 此 類 推,直 到 計 算 完 表 達 式 n。整 個 逗 號 表 達 式 最 終 的 值 就 是 表 達 式 n 的 值。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 0;int b = 2;int c = (a > b, a = b + 10, a, b = a + 1);printf("%d\n", c);return 0;
}
逗 號 表 達 式
定 義
?????????在 C 語 言 中,逗 號 表 達 式 是 一 種 較 為 特 殊 的 表 達 式,它 允 許 將 多 個表 達 式 組 合 在 一 起,按 順 序 依 次 計 算 每 個 子 表 達 式 的 值,最 后 整 個 逗 號 表 達 式 的 值 是 最 后 一 個 子 表 達 式 的 值。
基 本 語 法
表達式1, 表達式2, ..., 表達式n
?????????其 中,表 達 式 1、表 達 式 2 一 直 到 表 達 式 n 是 任 意 合 法 的 C 語 言 表 達 式,它 們 之 間 用 逗 號 分 隔。
執 行 流 程
?????????逗 號 表 達 式 的 執 行 順 序 是 從 左 到 右 依 次 計 算 各 個 子 表 達 式 的 值。也 就 是 說,先 計 算 表 達 式 1,接 著 計 算 表 達 式 2,以 此 類 推,直 到 計 算 完 表 達 式 n。整 個 逗 號 表 達 式 最 終 的 值 就 是 表 達 式 n 的 值。
下 面 展 示
代 碼 示 例
。
#include<stdio.h>
int main()
{int a = 0;int b = 2;int c = (a > b, a = b + 10, a, b = a + 1);printf("%d\n", c);return 0;
}
總結
???????至 此,關 于 C 語 言 的 操 作 符 探 索 暫 告 一 段 落,但 你 的 編 程 征 程 才 剛 剛 啟 航。寫 代 碼 是 與 機 器 深 度 對 話,過 程 中 雖 會 在 語 法、算 法 困 境 里 掙 扎,但 這 些 磨 礪 加 深 了 對 代 碼 的 理 解。愿 你 合 上 電 腦 后,靈 感 不 斷,在 C 語 言 的 世 界 里 持 續 深 耕,書 寫 屬 于 自 己 的 編 程 傳 奇,下 一 次 開 啟 ,定 有 全 新 的 精 彩 等 待。小 編 期 待 重 逢,盼 下 次 閱 讀 見 你 們 更 大 進 步,共 赴 代 碼 之 約!