为什么“ 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 => 0。

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

10-17 01:53