重複の可能性:
コンマ演算子がコンマ演算子として機能しないのはいつですか?
コンマ(,)はいつ演算子として動作し、いつセパレータとして動作しますか?そして、その結果はどうなりますか.可能であれば、両方の小さな例も挙げてください.
重複の可能性:
コンマ演算子がコンマ演算子として機能しないのはいつですか?
コンマ(,)はいつ演算子として動作し、いつセパレータとして動作しますか?そして、その結果はどうなりますか.可能であれば、両方の小さな例も挙げてください.
コンマは、関数呼び出し、関数宣言、初期化子、および変数宣言でセパレーターとして機能します。
f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;
対照的に、ステートメントを区切るために使用すると、コンマ演算子として動作します。
a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());
それがもたらす結果は、その右端のオペランドの値であり、実行の順序は、関数の引数の未定義の評価順序とは対照的に、左から右であることが保証されています。
カンマOperator
コンマ演算子 (トークン , で表される) は、最初のオペランドを評価して結果を破棄し、次に 2 番目のオペランドを評価してこの値 (および型) を返す二項演算子です。コンマ演算子は、どの C 演算子よりも優先順位が低く、シーケンス ポイントとして機能します。
例:
/int i = (5, 10); /* 10 is assigned to i*/
コンマ演算子の主な用途は、次の状況で副作用を生成することです。
カンマSeparator
コンマは、関数の呼び出しと定義、マクロのような関数、変数宣言、列挙型宣言、および同様の構造で使用される場合、区切り記号として機能します。
例:
int a = 1,
b = 2;
void fun(x, y);
もう一つの例:
void fun(f1(), f2());
基本的に、(式のリストとは対照的に) 式が必要な場所ならどこでも演算子として動作します。