首页 > 解决方案 > 为什么循环变得无限?

问题描述

如何摆脱无限循环?

unsigned char half_limit = 130;

for (unsigned char i = 0; i < 2 * half_limit; ++i)
{
    //smth is happening;
}

请帮忙。

谢谢!

标签: c++

解决方案


使您的循环变量成为int.

unsigned char不能超过 255,因此递增i过去会将其包装为 0。

2*130是 260,因为字面量的类型2int,并且将 anint乘以unsigned char得到int.

因此,当i是 a时unsigned char,您的循环终止条件将永远不会满足,因为i它将始终小于 260,因此是无限循环。


推荐阅读