トップ回答者
算術演算の結果オーバーフローが発生しました。

質問
-
はじめまして。mep1と申します。
PCは下記のものを使っております。
OS:Windows Vista Home Premium
開発環境:VB2008 Express SP1
上記の環境で次のコードを実行すると「算術演算の結果オーバーフローが発生しました。」というメッセージが表示されます。
--------------------------------------------
Dim Result As Integer
Dim Data1 As Byte
Dim Data2 As ByteData1 = 100
Data2 = 200
Try
Result = Data1 * Data2
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
--------------------------------------------
エラーの切り分けとして、変数のData1,Data2のどちらかをInteger型にすることでエラーを出さずに正常に乗算できることがわかっております。
何故例外エラーが発生するのかご存じの方は教えて頂けますでしょうか?
よろしくお願いいたします。
回答
-
一度以下を読まれておくと良いと思います。
3-4-1 VB .NET の演算子
http://msdn.microsoft.com/ja-jp/library/dd314346.aspx--- 引用開始 ----------------------------------------
原則として計算結果は、もとの計算対象項目と同じデータ型で算出されるか、またサイズが異なる複数のデータ型を 1 つの計算式で使っていた場合は、最もサイズが大きいデータ型で算出されます。
--- 引用終了 ----------------------------------------
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク mep1 2009年4月25日 9:49
すべての返信
-
原因は既に回答があるのでさておくとして、Integer型に一時的にキャストすると言うことで、CIntとか使うと良いかもしれません。
http://msdn.microsoft.com/ja-jp/library/dd314347.aspx
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -
一度以下を読まれておくと良いと思います。
3-4-1 VB .NET の演算子
http://msdn.microsoft.com/ja-jp/library/dd314346.aspx--- 引用開始 ----------------------------------------
原則として計算結果は、もとの計算対象項目と同じデータ型で算出されるか、またサイズが異なる複数のデータ型を 1 つの計算式で使っていた場合は、最もサイズが大きいデータ型で算出されます。
--- 引用終了 ----------------------------------------
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク mep1 2009年4月25日 9:49