C# For 循环困惑

标签 c#

为什么“num”有时会变成0?

int num = 16;
for (int i = 1; i < 1000; i++)
{
    Console.WriteLine(num *= i);
}

最佳答案

在第 31 次迭代时,num 将是 -1073741824,因为您说您已经理解溢出。

在下一次(第 32 次)迭代中,您将 num 乘以 32,即二进制 b100000。此乘法与将值向左移动 5 位相同。

-10737418240xC0000000,如果您将这 5 位向左移动,您的 32bit 值最终为 0x00000000 => 零。

关于C# For 循环困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42143596/

相关文章:

c# - 在c#中自定义ToolStripMenuItems

c# - "inherits"和 "classname"都需要吗?

c# - 数据驱动的单元测试问题

c# - 为什么 Mono 中的 Winforms 没有打开任何窗口?

c# - 正则表达式匹配多个字符串

c# - 在asp.net mvc4中动态添加DisplayName属性

C# 将整个数组移动 1

c# - 我可以使用带有 params 关键字的 lambda 表达式吗?

c# - 沿 XAML Shapes.Path 获取点

c# - ObservableCollection 不更新 ListView