Подтвердить что ты не робот

Объясните 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

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

4b9b3361

Ответ 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

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