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;
Edit: C# дает вам предупреждение, если вы используете l вместо L. Зафиксированный.