为什么编译错了? 关于if语句解决方法

为什么编译错了? 关于if语句
C/C++ code
#include <stdio.h>
void main()
{
    int a=0,b=0,c=0,d=0;
    if(a=1) b=1;c=2;
    else d=3;
    printf("%d,%d,%d,%d\n",a,b,c,d);
}


到底哪错了呢?还有,如何查看错误信息?以前是按F4就可以了,今天电脑不知道怎么了,按F4没反应 还有没别的方法查看错误信息?

------解决方案--------------------
C/C++ code

#include <stdio.h>
void main()
{
    int a=0,b=0,c=0,d=0;
    if(a=1) 
     {b=1;c=2;}
    else d=3;
    printf("%d,%d,%d,%d\n",a,b,c,d);
}

------解决方案--------------------
C/C++ code

#include <stdio.h>
void main()
{
    int a=0,b=0,c=0,d=0;
    if(a==1) //此处应该是a==1
   {b=1;
     c=2;
    }
    else d=3;
    printf("%d,%d,%d,%d\n",a,b,c,d);
}

------解决方案--------------------
a=1是赋值语句
------解决方案--------------------
if(a=1)这句话为真,d永远为0