문제
누군가가 가변 a의 오버플로의 이유를 설명 할 수 있습니까? B는 A보다 큽니다.
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 . . .
감사!
해결책
RHS는 an입니다 int 표현의 모든 부분이 int이기 때문에 곱셈. 오랫동안 할당된다고해서 긴 산술로 수행된다는 의미는 아닙니다.
변경 :
long a = 1024L * 1024 * 1024 * i;
그리고 그것은 작동합니다. (차이점은 처음 1024의 끝에 L입니다.)
제휴하지 않습니다 StackOverflow