タグ: 型変換

  • VBのTrueは-1

    VBでTrueを整数型に変換すると「-1」になる理由とは?

    今日、驚いたことがありました。Visual Basic (VB) で True を整数型にキャストすると、その結果が「1」ではなく「-1」になるのです。初めて知ったときは、「なぜ?」と思いました。

    この記事では、この現象の理由について解説します。

    なぜTrueは-1になるのか?

    一般的にプログラミング言語では、True は「1」、False は「0」として扱われることが多いですが、VBは異なる挙動を示します。具体的には、True は「-1」、False は「0」として表現されます。この動作は、VBの設計によるもので、古いコンピュータのアーキテクチャや言語仕様の影響を受けています。

    VBでは、True はビット単位で全てのビットが「1」の状態を指します。整数型で「-1」を2進数に表すと、すべてのビットが「1」となります(符号付き2の補数表現)。一方、False は全てのビットが「0」です。このため、True を整数に変換すると「-1」となるわけです。

    歴史的な背景

    この仕様は、VBがMS-DOSや初期のWindows環境で動作していた時代のレガシーを引き継いでいます。当時の環境では、ブール値をビットマスクとして扱うことが一般的であり、True が全ビット「1」となることで、ビット操作が効率的に行えるという利点がありました。

    参考資料

    詳しくは、Stack Overflowのこちらのスレッドも参考にしてください:
    Why does casting a Boolean to an Integer return -1 for True?

    結論

    VBでのTrue = -1 という挙動は、プログラミング言語の仕様と歴史的な背景によるものです。この特徴を知っておくと、コードを書く際や他の言語と比較する際に、より深い理解が得られるでしょう。