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, Исправлена.

В ролях долго так:

long shazbot = 1000000000L * DateTime.Day;
Другие вопросы по тегам