为什么“ num”有时变成0?
int num = 16;
for (int i = 1; i < 1000; i++)
{
Console.WriteLine(num *= i);
}
最佳答案
在您的第31次迭代中,由于您说您已经理解了溢出,所以num
将为-1073741824
。
在下一个(第32次)迭代中,将num
乘以32
,即b100000
二进制。此乘法与将值左移5位相同。-1073741824
是0xC0000000
,如果向左移动5位,则32bit值最终将变为0x00000000
=> 0。
关于c# - C#用于循环困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42143596/