在C++17中, 以下代码会死循环
long int sum = 0;
for (size_t i = 99999; i >= 0; i--)
{
/* code */
sum += i;
}
这是因为在C++17及之前的版本中,size_t类型是一种无符号整数类型。
在以上代码中,当i减小到0时,循环条件 i >= 0 仍然满足,因为无符号整数不会小于零。所以循环将继续进行下去,导致死循环。
要解决这个问题,可以将变量i的类型改为有符号整数类型,例如使用int类型。修改后的代码如下:
long int sum = 0;
for (int i = 99999; i >= 0; i--)
{
/* code */
sum += i;
}
这样,当i减小到0时,循环条件 i >= 0 将不再满足,循环结束避免了死循环的问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。