1000000000 * 3 = -1294967296?
Я не совсем понимаю!
Сегодня 3 ноября
DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;
Shazbot выходит на -1294967296
Да???
2 ответа
Решение
shazbot
может быть long
, но ни 1000000000
или же DateTime.Day
являются. Итак, C# делает int
умножение сначала (что приводит к переполнению), а затем приводит его к long
хранить в shazbot
,
Если вы хотите long
результат, сделать один из них long
, как это:
long shazbot = 1000000000L * DateTime.Day;
Редактировать: C# выдает предупреждение, если вы используете l
вместо L
, Исправлена.