2013-02-16 2 views
14

Пожалуйста, объясните мне выход этой программы:Пожалуйста Объясните Comma Operator в этой программе

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 

Мои сомнения то, что делает «» оператор здесь?
Я скомпилировал и запустил программу с помощью блоков кода.

+0

возможный дубликат [Что делает оператор запятая \ '\' делать в C?] (http://stackoverflow.com/questions/52550/what-does-the-comma-operator-do-in-c) –

ответ

23

Оператор , оценивает серию выражений и возвращает значение последнего.

c=a,b такое же, как (c=a),b. Именно поэтому c является 10

c=(a,b) присвоит результат a,b, который составляет от 20 до c.

Как Майк указывает в комментариях, назначение (=) имеет более высокий приоритет, чем запятая

+2

+ и '=' имеет более высокий приоритет, чем ','. –

+0

@Eduardo +1, но, хотя ответ для 'd = (a, b)' является своего рода ясным, но добавляет, что в вашем объяснении ваш ответ будет завершен – exexzian

+0

@sansix: хорошая точка; просто добавил его; спасибо – Eduardo

4

Оператор запятой оценивает все свои операнды, а затем дает значение последнего выражения.

11

Ну, это о приоритете операций:

c=a,b 

является

эквивалентно

(c=a),b 

Дело в том, что оператор «,» будет r второе значение.

Таким образом

c=a,b 

назначает -с и возвращает б

d=(a,b) 

возвращает б и присваивает д

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