2015-02-28

日記

 午後起きて(ここ数日はいつも昼の遅めの時間に起きている)、従姉妹と遊んだり肉焼いたりABCやったりして適当に本読んで寝た。

雑記 [programming, C++]

・whileとデクリメントでfor文の代用をするかしないか

  for (int i = 0; i < n; i++) {...}

  while(n--) {...}

と書くのは格好良い(もちろん使うのは回数だけ欲しいときだけね)。ただしデクリメントとwhileの判定の仕様に気をつけようねという話。具体的に書いたほうがわかりやすいか。

  ...
  scanf("%d",&n);
  while(--n) printf("%d\n",n);
  ...
なら
$ echo 5 | ./hoge.out #もっといい書き方があるはずでしょ
4
3
2
1

になって、

  ...
  scanf("%d",&n);
  while(n--) printf("%d\n",n);
  ...
なら
$ echo 5 | ./hoge.out
4
3
2
1
0

になる。それだけです。nに負の数入れると止まらなくなるのできちんとしたプログラムにはこんなコード書いちゃだめです。競技プログラミングだけね。だったら最初から書かないほうがいいね。
忘れてたけど、それならマクロとしてrep(i,n) {...}って書いたほうがまだ短いし綺麗だしループ変数も使える。テンプレートなしで頑張って生きる人には向かない。だからといって#include <bits/stdc++.h>で逃げるような人間になってはいけないし、きちんと書くべきところは書くべきで、基準としてはいわゆるホワイトボードにコード書かせるような場面に対応できるように……とは考えたけど、そもそもホワイトボードに書かせても実務上の能力とは一致しないので面接でやってはいけない。じゃあもう適当でいいんじゃないか。

広告を非表示にする