逗號運算子

2021-08-30 01:16:21 字數 815 閱讀 4891

c 語言中,逗號(,)也可以是運算子,稱為逗號運算子(comma operator)。逗號運算子可以把兩個以上(包含兩個)的表示式連線成乙個表示式,稱為逗號表示式。其一般形式為:

子表示式1, 子表示式2, ..., 子表示式n

例如:a + b, c = b, c++

逗號運算子的優先順序是所有運算子中級別最低的,通常配合 for 迴圈使用。逗號表示式最右邊的子表示式的值即為逗號表示式的值。上例中,c++ 的值(c 自增之前的值)即為該表示式的值。

逗號運算子保證左邊的子表示式運算結束後才進行右邊的子表示式的運算。也就是說,逗號運算子是乙個序列點,其左邊所有***都結束後,才對其右邊的子表示式進行運算。因此,上例中,c 得到 b 的值後,才進行自增運算。

下面我們來看一些小例子:

var = 235,567;

乍一看您可能以為這個語句有語法問題,其實它是完全正確的!首先運算逗號左邊的子表示式 var = 235,var 被賦值為 235;然後運算右邊的子表示式,其值為 567,故而整個逗號表示式的值是 567。可別以為 var 得到的值是 235567 或者 567 哦!如果寫成:

var = (235,567);

則 var 得到的值是 567。

逗號也被用作分隔符(separator),例如:

int i_var1 = 1, i_var2 = 2, i_var3 = 3;

printf("%d %d %d\n", i_var1, i_var2, i_var3);

上例中的逗號是分隔符,而不是逗號運算子。

例題:fun(int x,int y)

main()

答案:8

逗號運算子

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

逗號運算子

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

逗號運算子

逗號運算子保證被它分開的表示式按照從左到右的次序進行計算,換句話說,逗號是個順序點,逗號左邊產生的所有 都在程式執行到逗號右邊之前生效。這一點在逗號右邊的表示式用到逗號左邊變數的時候尤其重要 ounces cost ounces first oz 這將遞增ounces,並在第二個子表示式中實用oun...