为什么“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
=> 零。
关于C# For 循环困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42143596/