MNAの世界

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

PC、技術系

気の利くコンパイラ

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

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

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

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

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

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

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

-PC、技術系


comment

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

関連記事

AQUOSケータイ W51SH GET!

前々より目をつけていたSHARPの端末、W51SHがいつのまにか発売していました! (目をつけてた割には忘れてたんだな・・・) これはなかなか良さそうです!待望のAQUOSケータイ! 前機種であるW4… 続きを読む

no image

iPodにトラブル発生?

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

no image

無線LANの調子が悪い理由

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

no image

リモートデスクトップ復旧

以前書いたWindowsのパッチを当てるとリモートデスクトップでブルースクリーンになる現象から2ヶ月あまり。 当方にとってはあまりにも致命的な問題なので、仕方なくパッチを当てるのを回避してきましたが、… 続きを読む

no image

PC死亡 序章

朝起きるとPCの電源が落ちていました・・・ 組んだ当初からなんかおかしかったこのマシンですが、ついに限界に達したのか!? 電源を入れてから1時間程度放置しておくと勝手にパツン!と逝きます。 これまでも… 続きを読む