gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)で
#include <stdio.h>

int main(int argc, char *argv[]){
 int a = 2;

 if(a = 1)
  printf("%s\n", argv[0]);
return 0;
}

というプログラムを-Wall付きでコンパイルしてみたら、
test.c:6: 警告: 真偽値として使われる代入のまわりでは、丸括弧の使用をお勧めします
という警告が出た。まあこれで何か起こってることはわかるだろう。