无法理解输出的原因

Jai*_*dra 3 c

我正在运行代码段.但我无法理解它产生的代码和输出.

#include <stdio.h>
int main()  
{ 
  int a, b,c, d;    
  a=3;    
  b=5;    
  c=a,b;    
  d=(a,b);      
  printf("c = %d" ,c);    
  printf("\nd = %d" ,d);    
  return 0;
}  
Run Code Online (Sandbox Code Playgroud)

该程序的输出是:

c=3
d=5
Run Code Online (Sandbox Code Playgroud)

我不知道输出是怎么来的?

MBy*_*ByD 9

  1. 当你有逗号时,表达式被评估为正确的参数,这就是为什么d=(a,b);被评估为d=b.
  2. =具有比逗号更高的优先级,因此表达式c=a,b;被计算为(c=a),b;

不是答案的一部分,但值得一提的是,整个c=a,b;表达式被评估为b,而不是a,例如,如果你写了d=(c=a,b);你得到c=aAND d=b;