2016-12-28 9 views
-1

誰も私のために説明することができます:変数代入し、カンマ演算子

int a, b, c, d; 
a = 2; 
b = 4; 
c = a, b; 
d = (a, b); 

なぜc == 2d == 4 ???

+1

画像にコードと結果を投稿しないでください。携帯端末で見るためのPITAであり、コンパイラでもコードを試すことができます。あなたがそれを修正するまで-1。 –

+0

これで申し訳ありません。 –

+1

Downvote retracted。 – Bathsheba

答えて

5

二つの文は両方による(任意のオペレータの最も低い優先順位を有する)コンマオペレータはCおよびC++でどのように機能するかに

c = a; 
d = b; 

として評価されています。

最初にc = aが評価されます(=はカンマ演算子よりも優先順位が高いため)b(これはノーオペレーションです)が評価されます。 式全体のの値はbですが、何も割り当てられていません。

d = (a, b);については、括弧のために(a, b)が最初に評価されます。これは値bを持ち、dに割り当てられています。

+0

ok、ありがとう^ _^ –

+1

@TrầnHồngPhát - それはあなたとそのスポットに役立つので、この答えを受け入れる必要があります。 – StoryTeller