14

このプログラムの出力について説明してください。

int main()
{    
    int a,b,c,d;  
    a=10;  
    b=20;  
    c=a,b;  
    d=(a,b);  
    printf("\nC= %d",c);  
    printf("\nD= %d",d);  
}

私が得ている出力は次のとおりです。

C= 10  
D= 20

私の疑問は、「、」演算子がここで何をするのかということです。
コードブロックを使用してプログラムをコンパイルして実行しました。

4

3 に答える 3

23

,演算子は一連の式を評価し、最後の値を返します。

c=a,bと同じ(c=a),bです。それがcが10である理由です

c=(a,b)a,bの結果(20)をに割り当てcます。

マイクがコメントで指摘しているように、割り当て(=)はコンマよりも優先されます

于 2013-02-16T14:49:22.060 に答える
11

さて、これは演算子の優先順位についてです:

c=a,b

に相当

(c=a),b

重要なのは、「、」演算子は2番目の値を返すということです。

したがって

c=a,b

aをcに割り当て、bを返します

d=(a,b) 

bを返し、それをdに割り当てます

于 2013-02-16T14:51:17.473 に答える
4

コンマ演算子は、そのすべてのオペランドを評価してから、最後の式の値を生成します。

于 2013-02-16T14:49:07.613 に答える