Delphi相談室その5
■ このスレッドは過去ログ倉庫に格納されています
0753デフォルトの名無しさん
NGNGたぶんもう一つ掛算を書き忘れたのだとして、 1000000*1000000 で説明します。
どうしてオーバフローになるかというと、即値は32bitの整数の範囲なら32bitとして解釈されます。
それで、1000000*1000000 は32bit同士の掛算としてコンパイル時に掛算してしまおうとして
32bitの範囲に入らないよ=オーバーフローになるよとエラーが出るわけです。
Delphiのコンパイラは、結果をint64に入れるのだから型はint64だろうなんて推測はしません
回避するには64bitの定数である事をどこかで教えてやればいいのです
たとえば、
Int64(1000000)*1000000 とか 片方だけでもint64だと教えてやります
なお、 Int64(1)*1000000*1000000 はOKだけど
1000000*1000000*Int64(1) は駄目です
■ このスレッドは過去ログ倉庫に格納されています