Объясните 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
Мое сомнение в том, что делает оператор "," здесь?
Я скомпилировал и запускал программу с использованием блоков кода.
Ответы
Ответ 1
Оператор ,
оценивает серию выражений и возвращает значение последнего.
c=a,b
совпадает с (c=a),b
. Вот почему c - 10
c=(a,b)
назначит результат a,b
, который равен 20, c
.
Как указывает Майк в комментариях, присваивание (=
) имеет более высокий приоритет, чем запятая
Ответ 2
Ну, это о приоритете оператора:
c=a,b
есть
эквивалентно
(c=a),b
Дело в том, что оператор "," вернет второе значение.
Таким образом,
c=a,b
присваивает значение a c и возвращает b
d=(a,b)
возвращает b и назначает его d
Ответ 3
Оператор запятой оценивает все свои операнды, затем дает значение последнего выражения.