• ベストアンサー

integer型、long型、double型

vb6.0についてお聞きいたします。 こちらの問題は、visual studio 2005のvbでは生じません。 windows xp上で動かしているのですが、どうやら 何もしていないあるパラメータに32000ぐらいの数字よりも大きな 数字をいれるとエラーになってしまいます。 それも、integer型、long型、double型のすべての型で生じます。 そういうものなのでしょうか? HPをいろいろ見ましても、long型で20億ぐらいは 表現できるように書いてあるのですが。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

手元のExcel VBA(VB.NET系ではなくVB6系)で実験してみました LongとDouble共に再現しません。 Integerの場合 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200304_03040036.html >VB6ではIntegerが16bit、Longが32bitでしたが、 NETではIntegerが32bit、Longが64bitに変更されてますので。 割と有名ではあるんですが、Microsoft公式の文書を探すのが面倒くさいので放置。(2^16)/2 - 1 = 32767(正と負があるから。VB6のIntegerは-32768~32767しか取れない) ============================== Option Explicit Sub hoge() Dim a As Long a = 33000 MsgBox (a) End Sub =========================== Option Explicit Sub hoge2() Dim a As Double a = 33000 MsgBox (a) End Sub ===================== Option Explicit Sub hoge3() Dim a As Integer a = 33000 MsgBox (a) End Sub

noname#108554
質問者

お礼

確かにおっしゃるとおり このプログラムをexcelで動かすと 私の言うようにはなりません。(今、自宅で確認しました。) ところが、 ------------------- Sub hoge() Dim a As Double a = 33 * 1000 MsgBox (a) End Sub ---------------- では、オーバーフローします。 しかし、 ---------------- Sub hoge() Dim a As Double a = 33 a=a*1000 MsgBox (a) End Sub ------------------ なら大丈夫なようです。 ※普段はC++ユーザなので、混乱しました。 ありがとうございました。

関連するQ&A