在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賦值的 有三個表示式,用逗號分開,所以最終的值...