c语言,条件判断问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include<stdio.h>
int main()
{
int x=5,a=0,b=0;
if(x=a+b) printf("****\n");
else printf("####\n");
    return 0;
}

运行结果

img


请问条件表达式不是赋值语句么,为什么输出的是else?

a+b = 0
以0作为返回值为假
这是一种特殊情况

改成x==a+b
判断相等用==,单个等号是赋值

if里判断的是a+b
a+b=0,判断为假,执行else


#include<stdio.h>
int main()
{
    int x = 5, a = 0, b = 0;
    if (x = (a + b)) printf("****\n"); //if判断的是x的值,先执行赋值语句x=a+b,然后判断x的值
    else printf("####\n");
    return 0;
}