MNAの世界

ブログをリニューアルしました!コメント、リンク、ツイートなどはお気軽にどうぞ。

PC、技術系

気の利くコンパイラ

投稿日:2006年3月29日 更新日:

仕事でコードレビュー(C言語)をやっているとこんなコードを発見!

if(0 <= 変数名 <= 12) { ~ 処理 ~ }

この記述そのものに関しては、初心者が時々やる それほど珍しくは無い間違いですが、それよりも気になるのは しっかりコンパイルが通っていると言うことです。
そして、変換されたアセンブラコードを見ると この判定自体が取り除かれており、中の処理が必ず行われるようになっていたのです。

これはつまりこう言うことでしょうか。

「0 <= 変数名」が先に評価された場合、結果は 0 か 1。 つまり、「0 <= 12」も「1 <= 12」も必ず成立するために常に真となる。 よって、判定は取り除かれた。 「変数名 <= 12」を先に評価するとしても同様。

な、なるほど!
そう考えると文法的にも辻褄が合うような気がします。
でもこれってどう考えても意図した動作じゃないよな・・・

-PC、技術系


comment

リンクが多数含まれていると表示されないのでご注意ください。(スパム対策)

関連記事

no image

無線LANの調子が悪い理由

ある事実に気がつきました!!! それは窓を開けると途端に無線LANの調子が悪くなる!!! というかまともに通信できてない!!! リモートデスクトップやPSPで本格的に無線を使うようになってから暑い季節… 続きを読む

no image

iPodを買ってみた

第5世代のiPodをついに買ってしまいました。 60Gの黒い奴です。 これは動画も見られるようで、イベントで長距離移動が多い当方としては便利に使える・・・かも知れません。 でもあんまりバッテリー持たな… 続きを読む

no image

玄箱 再び死亡

先日再インストールしてから順調に動いていたと思われていた玄箱が再び死亡。 電プチしてから立ち上がる確率がどんどん下がっていき、 そして立ち上がっても数分後に止まると言う状況。 明らかに症状が悪化してい… 続きを読む

PV4を導入!

先週、PC修理のためにPCショップに行ったついでにPV4を仕入れてきました。 思ったよりもPCのトラブル解決までに時間がかかったので本日ようやく取り付け&動作確認できました! 早速アイマスを映してみる… 続きを読む

no image

エージェント来たる

先日mixiの外部ブログに対する扱いがあんまりな記事を書いてしばらくするとRSS取得時に来てたのとは別のなんだかよくわからないホストが巡回に来るようになりました。 2007/11/10 12:16:0… 続きを読む