为什么下面的 C 代码会陷入死循环?
for(unsigned char i = 0; i <= 0xff; i++){}
结果相同:
for(unsigned char i = 0; i <= 0xff; ++i){}
我必须以哪种方式修改代码,使其按预期工作(不使用 int
或 unsigned int
数据类型)?
最佳答案
如果你真的需要使用unsigned char
那么你可以使用
unsigned char i = 0;
do {
// ...
} while(++i);
当对unsigned
整数的算术运算超出其限制时,行为是明确定义的。所以这个解决方案将处理 256 个值(对于 8 位 unsigned char
)。
关于c - for (unsigned char i = 0; i<=0xff; i++) 产生无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493449/