int errcode=10; if( errcode=0 ){ printf("FALSEn"); } printf("%dn",errcode);
上記の式を実行すると、0が出力される(FALSEは出力されない)。
つまり、代入処理が終わってから条件判定をしている。
(演算子の優先順位的には判定してから、代入しているという可能性もあるな・・・)
左辺のerrcodeの値と、右辺の0のどちらの値で判定しているのかは、謎。
優先順位をもっと勉強した方がいいかも。
コンパイラさんいわく、式の結果で真偽値を判定する場合は()で囲むのがおすすめらしい。
int errcode=10; if( (errcode=0) ){ printf("FALSEn"); } printf("%dn",errcode);
の方がいいってことらしい。