なんとなく負け


for文を書くときにunsinedの値をカウンタにして、カウンタを減らしながら0まで実行したいことがある。
例えば

<code><br>for( usigned int i = 10; i >= 0 ; i-- ){<br>    data[i+1]=data[i];<br>}<br></code>

これは、data配列の中身を順番に1つずつずらしていく。
ただ、このループは永久に終わらない。iが0となったあと、i–が実行されて、unsignedであるために、INT_MAXになってしまい、i => 0の条件は常に満たされてしまう。

いろいろ方法はあると思うのですが、
http://q.hatena.ne.jp/1203477428
ここで質問があって、いろいろやり方があって、その中の6番目の回答に対する、質問者の答えがおもしろく、かなり共感できてしまった。
「なんとなく負けかな。」って。この、ちょっと何かスマートじゃないと感じるのは、みんな持っているものなんだな。

プログラム書いているとだいたい時間がかかるのはこういうどうでもよい問題だったりする。書く気になれば、そのまま書けるけど、なにか気に入らない。だから調べる。なかなか、スマートな方法が見つからない。もっと考える・・・。

プログラミングを仕事にするには、この感覚はちょっと向かないかもしれない。

コメント投稿は締め切りました。