soo*_*ise 6 c# integer-overflow
我糊涂了!
今天是11月3日
DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;
Run Code Online (Sandbox Code Playgroud)
shazbot出现在-1294967296
咦???
Pow*_*ord 41
shazbot可能是long,但不是1000000000或是DateTime.Day.因此,C#int首先进行乘法运算(导致溢出),然后将其转换long为存储shazbot.
如果你想要一个long结果,请将其中一个设为a long,如下所示:
long shazbot = 1000000000L * DateTime.Day;
编辑:如果您使用l而不是,C#会给您一个警告L.固定.