質問
誰かが私の変数にオーバーフローの理由を説明できますか? bがより大きいことに注意してください。
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 12345678901234567;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
12345678901234567
9223372036854775807
Press any key to continue . . .
ありがとうございます。
解決
式のすべての部分がintであるため、
RHSはのint型の乗算です。それは長い間に割り当てられていますからといって、それが長い算術で行われていますという意味ではありません。
に変更します:
long a = 1024L * 1024 * 1024 * i;
と、それは動作します。 (差は最初の1024の端部にLである。)
所属していません StackOverflow