先週Letを書いたあと、あることに気付きました。

「自分がCでif ((fp = fopen(…)) == NULL)の形を好きに思わないのは、BASICでそういう風に書けないということが影響しているに違いない」

周りには上のような形で書く人が多いのですが、いつも私はそれを避けてこんな感じにしています。

//その1
FILE* fp = fopen(...);
if (fp == NULL)
 
//その2
if (FILE* fp = fopen(...)) //C++限定

その2ではfpがNULLでないときに真となります。その1と真偽が逆になっていることに注意してください(2008年2月21日追記)。

私が嫌う条件は、条件文内の比較式の片方が代入になっているというパターンに当てはまるときです。

int ch;
while ((ch = getchar()) != EOF)
{
  //……
}

上のようなコードも書籍ではよく見かける気がしますが、私ならこう書きます。

for (;;)
{
  int ch = getchar();
  if (ch == EOF)
    break;
  //……
}

もっとも、BASICでif ((fp = fopen(…)) == NULL)相当の書き方が可能だったとして、私がこの形を好まぬようにならなかったという保証もありませんけどね。


スポンサード リンク

この記事のカテゴリ

  • ⇒ 人間の思考なんて何かに縛られている
  • ⇒ 人間の思考なんて何かに縛られている
  • ⇒ 人間の思考なんて何かに縛られている
  • ⇒ 人間の思考なんて何かに縛られている