プログラミング雑記

・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に負の数入れると止まらなくなるのできちんとしたプログラムにはこんなコード書いちゃだめです。競技プログラミングだけね。