No es capaz de entender el motivo de la salida.

Estoy ejecutando un fragmento de código. Pero no puedo entender el código y la salida que está produciendo.

#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;
}  

La salida de este programa es:

c=3
d=5

¿No entiendo cómo va la salida?