web-dev-qa-db-ja.com

cのコンマ演算子

#include<stdio.h> 
int main(void) {
   int a=(1, 2), 3; 
   printf("%d", a);
   return 0;
}

出力:2
出力が2である方法を説明できますか?

38
Kr Arjun

結果として:

a = x, y     =>     x

a = (i, j)   =>     j

したがって、次の場合:

x = (1 , 2)

a = (1 , 2) , 3     =>     2

前述のように、 ここ

コンマ演算子は、セミコロンがステートメントを終了する方法に類似した方法で式(値を持つ)を分離し、式のシーケンスが括弧で囲まれた方法のシーケンスと同様に括弧で囲まれます:(a、b、c)はシーケンスですコンマで区切られた式の最後の式cに評価されますが、{a; b; c;}は一連のステートメントであり、評価されません。コンマは、2つの式(コンマで区切られた式)の間でのみ使用できます。セミコロンは(非ブロック)ステートメントの終わりにあり、セミコロンはステートメントを終了します。

コンマ演算子は、C演算子の中で最も優先順位が低く、シーケンスポイントとして機能します。コンマとセミコロンの組み合わせでは、セミコロンはステートメントを分離しますが、通常の句読点としての使用に応じてステートメント内でコンマが発生するため、セミコロンはコンマよりも優先順位が低くなります。 c、dは(a、b)としてグループ化されます。 (c、d)これらは2つの別個のステートメントであるため。

これがあなたの質問に答えることを願っています。

3
Rui Silva