MNAの世界

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

PC、技術系

気の利くコンパイラ

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

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

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

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

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

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

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

-PC、技術系


comment

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

関連記事

[Stepmania] ビルド環境を VisualC++6.0 から 2005 Express Edition へ移行

珍しく風邪を引いてしんどすぎ!!! しかも今日届く予定だった新PCは発送が遅れたとの連絡が!!! あちょー!!! 仕方が無いので布団の中からStepmaniaのビルド環境をこれまでの VisualC+… 続きを読む

iPodでムービーを見てみよう

なんやかんやで結構使っておりますw アクセサリ(カバーとか液晶保護シートとか)も仕入れましたし。 相変わらずエクスプローラがおかしいのはイマイチですが・・・ 再起動すれば直りますが、iPodを充電する… 続きを読む

no image

玄箱 時刻校正導入

玄箱の時計はやたら精度が悪いらしく、1日で何分もずれてしまう。 これは鯖を運営する上で問題あるような気がする。 この状況を打開するべく、時刻校正をしてくれるNTPなるものを導入。 また、Linux に… 続きを読む

no image

iPodにトラブル発生?

会社の帰り道、いつものようにiPodで曲を聴いていると、いきなり再生が中断!!! しばらくしてまた曲の先頭から再生が再開されました。 むむ・・・?リードエラーでも起きたのか? 一応再生が止まった箇所に… 続きを読む

intel さくまドロップ

会社で組み込み開発技術展とやらに行って来た人が大量の戦利品を仕入れてきました。 早い者勝ちで貰えると言うことで、当方が貰ったのはこれ、「intel さくまドロップ」。 これを食べると頭がクロックアップ… 続きを読む