左操作数必须为左值怎么解决

问题相关代码,请勿粘贴截图
if ((a % 4 == 0 && a %400 != 0) || a % 400 = 0)
    printf("%d是闰年", a);
else
    printf("%d不是闰年", a);
运行结果及报错内容

为什么报错说 C2106: “=”: 左操作数必须为左值 划线部分是第一个a前面的括号

if ((a % 4 == 0 && a %400 != 0) || a % 400 == 0)   # 修改两个等号==
    printf("%d是闰年", a);
else
    printf("%d不是闰年", a);

很明显啊,if里面第二个a%400是 == 0。写成复制了

少了个等号。应该是:if ((a % 4 == 0 && a %400 != 0) || a % 400 == 0)

你好,把a %400 =0改成a % 400 == 0,就OK

采纳

您好,您这里有两个错误。除了写法上的错误a%400=0,不能对表达式赋初值外,还有一个逻辑上的错误,闰年一般指能被4整除且不能被100整除的数或能被400整除的数,所以写法应该为if ((a % 4 == 0 && a %100 != 0) || a % 400 == 0)