c# - 1000000000 * 3 = -1294967296?

标签 c# integer-overflow

我很困惑!

今天是 11 月 3 日

DateTime DateTime = new DateTime(2010,11,3);
long shazbot = 1000000000 * DateTime.Day;

shazbot 出来-1294967296

嗯???

最佳答案

shazbot 可能是一个long,但1000000000DateTime.Day 都不是。因此,C# 首先执行 int 乘法(这会导致溢出),然后将其转换为 long 以存储在 shazbot 中。

如果你想要一个long结果,把其中一个变成一个long,像这样:

long shazbot = 1000000000L * DateTime.Day;

编辑:如果您使用 l 而不是 L,C# 会给您一个警告。固定。

关于c# - 1000000000 * 3 = -1294967296?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087906/

相关文章:

c# - IoC 容器中一次性注入(inject)类

java - 为什么默认不检查溢出

c# - 为什么 C# 会针对 ushorts 上的模运算发出错误 "cannot implicitly convert int to ushort"?

c# - 我需要采取哪些步骤来实现具有角色的表单例份验证?

integer-overflow - 为什么 left+(right-left)/2 不会溢出?

c++ - 预期溢出但添加两个字节不会

matlab - 为什么 abs(intmin) ~= -intmin 在 matlab 中

c# - 如何重用正则表达式变量?

c# - 在 silverlight 中加载文件

c# - 相对于 x86,x64 下 Winforms 程序的启动速度慢 10 倍