#include <iostream>
using namespace std;
int main()
{
unsigned char counter = 0;
for (counter = 0; counter <= 255; counter++) {
printf("%d ", counter);
}
return 0;
}
正确的输出是无限循环,但我认为输出是0,1,。。。255,因为无符号字符的范围是0到255.当计数器变为256时,只有它超出了范围。 但这里我们的条件是反255,请澄清我的疑问
将无符号字符看作一个字节:0->; 0b00000000 1->; 0b00000001..255->; 0B11111111
那么下一个数字是0,因为你不能有第9位。 所以在0b11111111之后是0b00000000。
这就是为什么它是一个无限循环,它永远不会达到256,永远停留在0到255之间。
这将导致无限循环,因为if
循环中的条件(counter<<=255)
总是true
。
此条件不可能是false
:变量counter
不能包含高于255的值。