コンピュータ言語で代入が = で、比較が == ってのは正直設計ミスだろ。

C言語で EOF まで転送しようとして

while(c = getchar()) if(c = EOF) break;

と間違っても、文法上は間違いはないからすんなりコンパイルできる。
まあ、ワーニングは最近のコンパイラでは吐き出すが。

ところがこれは紛らわしいで、極めて間違いを発見しにくい。

FORTRANでも 100行までの命令を200回実行しようとして

DO 100 I=1.200

とミスすると、変数 DO100Iに1.2を代入しておしまいだ。空白を無視する設定だからな。