我很困惑!
今天是11月3日
DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;
shazbot出现-1294967296
咦???
答案 0 :(得分:41)
shazbot
可能是long
,但1000000000
或DateTime.Day
都不是。因此,C#首先int
乘法(导致溢出)然后将其强制转换为long
以存储在shazbot
中。
如果您想要long
结果,请将其中一个设为long
,如下所示:
long shazbot = 1000000000L * DateTime.Day;
编辑:如果您使用l
而不是L
,C#会向您发出警告。固定的。
答案 1 :(得分:1)
像这样长期投射:
long shazbot = 1000000000L * DateTime.Day;