3

重複の可能性:
コンマ演算子がコンマ演算子として機能しないのはいつですか?

コンマ(,)はいつ演算子として動作し、いつセパレータとして動作しますか?そして、その結果はどうなりますか.可能であれば、両方の小さな例も挙げてください.

4

3 に答える 3

6

コンマは、関数呼び出し、関数宣言、初期化子、および変数宣言でセパレーターとして機能します。

f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;

対照的に、ステートメントを区切るために使用すると、コンマ演算子として動作します。

a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());

それがもたらす結果は、その右端のオペランドの値であり、実行の順序は、関数の引数の未定義の評価順序とは対照的に、左から右であることが保証されています。

于 2011-06-28T07:08:19.757 に答える
3

カンマ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()); 
于 2011-06-28T07:08:46.920 に答える
1

基本的に、(式のリストとは対照的に) 式が必要な場所ならどこでも演算子として動作します。

于 2011-06-28T07:11:47.817 に答える