2016-12-28 5 views
-1

Кто-нибудь может объяснить мне:Присваивание и оператор запятая

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

c == 2 Почему и d == 4 ???

+1

Не публикуйте код и не получайте изображения, это PITA, чтобы видеть на мобильных устройствах, а также попробовать свой код в компиляторе. -1, пока вы его не исправите. –

+0

ОК, Так жаль об этом. –

+1

Downvote втянута. – Bathsheba

ответ

5

Два утверждения оба оценены как

c = a; 
d = b; 

из-за того, каким образом запятой оператор (который имеет самый низкий приоритет любого оператора) работает в C и C++.

Для первого, сначала оценивается c = a (как = имеет более высокий приоритет, чем оператор запятой), затем оценивается b (который является не-оператором). Полное выражение имеет значение b, но это никому не присвоено.

Для d = (a, b);, (a, b) сначала оценивается по скобкам. Это значение имеет значение b и присвоено d.

+0

ОК, спасибо^_^ –

+1

@ TrầnHồngPhát - Вы должны принять этот ответ, так как он вам помог, и это место. – StoryTeller

Смежные вопросы