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);
の方がいいってことらしい。
 
 
コメントを残す