いい加減なVBの型宣言
  (C) 2001 A c t o r .N e t Soft Ware



 以下に公開するソースなどの著作は 篠田直樹 に復帰します。
原則として無許可で使用する事が出来ますが、ここに書かれている内容を
直リンクや引用などであたかも第三者が作成した様に見せたり如何なる事情でも金銭が発生する行為を禁止します。



Dim aaa As Long
aaa = 30000 + 30000

一見、何の変哲もない計算式です。
longは -9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807までの有効範囲を持ちます。

万の桁くらいきちんと計算出来る筈です。
では実行してみてください・・・オーバーフローを起します。

ちなみに以下はきちんと計算が行なわれます。
おかしいと思いませんか?

Dim aaa As Long
aaa = 30000 + 90000


理由は簡単です、30000の数を代入した時、Short型で勝手に宣言されているのです。
解釈からすると、Short型 + Short型 で足してしまうとLong型に代入する前の時点でオーバーフローを起します。
スバリ、VBには型宣言があってもいい加減なのです。
これを回避するには、数値の後に&をつけて数字がLong型である事を明示的に示す必要があります。

例えば、テキストボックスには文字や数字を混在させる事が可能です。

TextBox = 5000

この解釈はTextBoxに数字の5000を入れるという意味にも取れるし、5000という文字
として捕らえてしまう事も出来てしまいます。

VBは親切なのか不親切なのか、或いはおせっかいなのか、明示的に書かない部分は
全て勝手な解釈を行なって宣言をしてしまいます。
そもそも、型宣言とはメモリーの領域を確保する作業な訳ですから、
確保する領域が明示的で無ければなりません。
そこで、VBはコンパイルを行なう時、勝手な解釈で型宣言を填め込んでしまうのです。



Copyright (C) 2001 A c t o r .N e t Soft Ware All Right Reserved