c语言刚学if为什么没有报错输出永远是0?

#include <stdio.h>

int main()
{
int x;
scanf("%d",&x);
int f=0;

if (x=0){
     f=1;
}else    if (x>0){
        f=2;        
    }else{
        f=2*x;
    } 
     
printf("f=%d",f);
return 0;    

}

第一个if语句,判断表达式把0赋给了x,为假走else if判断也为假,最后走else部分,因为前面把x改成了0所以结果是0

return 0嘛,自然是0了。