C C 中的逗號運算子

2021-10-21 02:23:44 字數 1244 閱讀 5088

在c語言中逗號運算子可以將兩個表示式連線起來

int n =3+

5,6+

10;// 此時 n = 16 ,

稱為逗號表示式,又稱為「順序求值運算子」。逗號表示式的一般形式為表示式1, 表示式2逗號表示式的求解過程是:先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式「3+5, 6+ 10」的值為16。

例子 :a=3*5,a*4, 注意重點 : 逗號運算子優先度最低,比賦值運算子低。

對此表示式的求解,讀者可能會有兩種不同的理解:一種認為「3*5,a*4」 是乙個逗號表示式,先求出此逗號表示式的值, 如果a的原值為3,則逗號表示式的值為12,將12賦給a, 因此最後a的值為12。另一種認為:「a=3*5」是乙個賦值表示式」,「a*4」是另乙個表示式,二者用逗號相連,構成乙個逗號表示式。這兩者哪乙個對呢?

賦值運算子的優先級別高於逗號運算子, 因此應先求解a=3*5(也就是把「a=3*5」作為乙個表示式)。經計算和賦值後得到a的值為15,然後求解a*4,得60。整個逗號表示式的值為60

下面在將兩個例子:

x = (a = 3, 6 * 3);x = a = 3, 6 * a;

是乙個賦值表示式,將乙個逗號表示式的值賦給x,x的值等於18。

包括乙個賦值表示式和乙個算術表示式,x的值為3。

下面用乙個程式看看

另外附上我的github倉庫:

分享關於c++基礎知識,智慧型指標,記憶體四區, 資料結構和演算法,linux, mysql,redis等等。

逗號運算子

在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。假設b 2,c 7,d 5,a1 b,c d 3 a2 b,c d 3 對於第一行 有三個表示式,用逗號分開,所以最終的值應該是最後乙個表示式的值,也就是d 3,為8,所以a1 8。對於第...

逗號運算子

c 語言中,逗號 也可以是運算子,稱為逗號運算子 comma operator 逗號運算子可以把兩個以上 包含兩個 的表示式連線成乙個表示式,稱為逗號表示式。其一般形式為 子表示式1,子表示式2,子表示式n 例如 a b,c b,c 逗號運算子的優先順序是所有運算子中級別最低的,通常配合 for 迴...

逗號運算子

逗號運算子是指在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後乙個表示式的值。例子 int a1,a2,b 2,c 7,d 5 第1行 a1 b,c d 3 第2行 a2 b,c d 3 第3行 對於給a1賦值的 有三個表示式,用逗號分開,所以最終的值...