Почему это не переполнение? - PullRequest
2 голосов
/ 14 июля 2009

Учитывая этот код:

int x = 20000;
int y = 20000;
int z = 40000;

// Why is it printing WTF? Isn't 40,000 > 32,767?
if ((x + y) == z) Console.WriteLine("WTF?");

И зная, что int может содержать от -32,768 до +32,767. Почему это не вызывает переполнение?

Ответы [ 12 ]

1 голос
/ 14 июля 2009

Поскольку целые числа являются 32-разрядными, они хранят значения до ± 2 ГБ.

0 голосов
/ 14 июля 2009

Все вышесказанное верно, однако важно знать, что если вы назначите число больше 2 ^ 32, оно не скомпилируется!

...