表題のようにプログラム中で
if(a!=b)
を
if(a=!b)
と誤って記述した所、コンパイルはできるのですがそこでプログラムが停滞していました。
コンパイルができるということはこの記述にも意味があるのでしょうか?
どのような意味なのでしょうか?
追記
for(i=0;i<n;i++){
printf("check1");
if(a=!b){
実行コード
}
}
printf("check2");
とした時に実行中でcheck2が出力されず、プログラムが停滞しました。
if(a!=b)
としたら正常に動作しました。
if(a=!b)
と記述した時にとか文句言われたりしませんか? 環境やオプションにもよるのかもしれません。
– Shirone Feb 04 '15 at 07:47if(a=!b)
という記述は"正しい"C言語のコードになっていますよ。あらゆるC言語コンパイラはこのコードを受け付ける必要があります/エラーにしてはダメ。ただし、プログラマの意図通りでない可能性もあるので、Shironeさんが指摘されるように、親切なコンパイラならば警告(warning)を出すかもしれません。例:Clangの例 – yohjp Feb 04 '15 at 08:18-Wall
を付けておくと良いかもしれません。 – Feb 04 '15 at 09:29