根据月份日期输出相应星座,为什么这串代码不对

#include <stdio.h>
int main()
{
int m, d;
scanf("%d %d",&m,&d);
if(m=3 && d>=21) || (m=4 && d<=20)
{
printf("白羊");
}
if(m=4 && d>=21) || (m=5 && d<=20)
{
printf("金牛");
}
if(m=5 && d>=21) || (m=6 && d<=20)
{
printf("双子");
}
if(m=6 && d>=21) || (m=7 && d<=22)
{
printf("巨蟹");
}
if(m=7 && d>=23) || (m=8 && d<=22)
{
printf("狮子");
}
if(m=8 && d>=23) || (m=9 && d<=22)
{
printf("处女");
}
if(m=9 && d>=23) || (m=10 && d<=22)
{
printf("天秤");
}
if(m=9 && d>=23) || (m=10 && d<=22)
{
printf("天蝎");
}
if(m=11 && d>=23) || (m=12 && d<=22)
{
printf("人马");
}
if(m=12 && d>=23) || (m=1 && d<=20)
{
printf("摩羯");
}
if(m=1 && d>=21) || (m=2 && d<=20)
{
printf("宝瓶");
}
if(m=2 && d>=21) || (m=3 && d<=20)
{
printf("双鱼");
}
return 0;
}

判断相等必须用==而不是=,m后面都要加个=

你这里条件写成一样的了

if(m=9 && d>=23) || (m=10 && d<=22)
{
printf("天秤");
}
if(m=9 && d>=23) || (m=10 && d<=22)
{
printf("天蝎");
}