下列程序的运行结果为什么是1啊

#include<stdio.h>void main()
{int a=1,b=2,c=3;if(c=a)printf("%d\n",c);
else
printf("%d\n",b);
}
这个运行的结果为什么是1啊

c=a是赋值运算,执行结果返回值一定是true,所以if(c=a)一定会执行内部的输出c,c被赋值了为a,结果打印为1

c=a是赋值语句为真且c的值变成了1

if(c=a)
是把a赋值给c,c变成了1,条件变成了:if(1),1就是真,所以输出c就是输出1