2016-12-28 2 views
-1

Kann jemand mir erklären:Variablenzuweisung und der Komma-Operator

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

Warum c == 2 und d == 4 ???

+1

Veröffentlichen Sie keine Code und Ergebnisse in Bildern, es ist ein PITA auf mobilen Geräten zu sehen, und Ihren Code auch in einem Compiler zu versuchen. -1 bis Sie es beheben. –

+0

OK, tut mir leid. –

+1

Downvote eingefahren. – Bathsheba

Antwort

5

Die beiden Aussagen beide als

ausgewertet
c = a; 
d = b; 

darauf zurückzuführen, wie die Komma Operator (die die niedrigste Priorität von jedem Betreiber hat) arbeitet in C und C++.

Für die erste wird c = a zuerst ausgewertet (= hat höhere Priorität als der Komma-Operator), dann wird b (was ein No-Op ist) ausgewertet. Der gesamte Ausdruck hat einen Wert b, aber das ist nichts zugewiesen.

Für d = (a, b); wird zuerst (a, b) aufgrund der Klammern ausgewertet. Dies hat einen Wert b, und das ist d zugeordnet.

+0

ok, danke^_^ –

+1

@ TrầnHồngPhát - Sie sollten diese Antwort akzeptieren, da es Ihnen geholfen hat und es ist genau richtig. – StoryTeller

Verwandte Themen