表題のようにプログラム中で

if(a!=b)

if(a=!b)

と誤って記述した所、コンパイルはできるのですがそこでプログラムが停滞していました。
コンパイルができるということはこの記述にも意味があるのでしょうか?

どのような意味なのでしょうか?


追記

for(i=0;i<n;i++){
    printf("check1");
    if(a=!b){
        実行コード
    }
}
printf("check2");

とした時に実行中でcheck2が出力されず、プログラムが停滞しました。

if(a!=b)

としたら正常に動作しました。