我怎么觉得有点奇怪呢?

#include<stdio.h>
int main()
{
int i=10;
int j=0;
if (j=0) i++;
else i--;
printf("%d",i);
return 0;
}
这个运行出来答案是9,我不太懂,有没有哪位大神可以帮我解惑一下。

if(j = 0)是把0作为返回值当成条件,为假
所以进入else i--就是9

看清楚 是 if (j=0) ,不是if (j==0) ;所以是运行到 i--;这步,自然就是9

if (j=0) 是给j赋值为0,再判断为假,执行else
if (j==0)才是判断 j 是否等于0