我在C中有一个For循环:
u8 i;
for (i=0; i <= 255; i++)
{
//code
}
现在编译器抱怨“由于数据类型的范围有限,比较总是如此” 我知道255是u8 max,但for循环必须有条件。那我应该放在那里? 感谢。
答案 0 :(得分:7)
uint8_t i=0;
do {
//code
}while(++i);
答案 1 :(得分:5)
什么是u8
?如果它意味着8位无符号整数,则255 + 1再次给出零,因此循环重新开始。你应该使用更大的整数类型。或按照回复
do-while
答案 2 :(得分:3)
u8 i=0,iold;
do{
//code
iold=i++;
}while(iold<i);
答案 3 :(得分:3)
u8 someFunction()
{
int i;
for (i = 0; i < 256; i++)
{
// do something with i here and /or break
}
if (i == 256)
{
// loop ran completely without a break
}
return i; // will convert i to "u8" type (256 will become 0)
}
答案 4 :(得分:3)
for
循环不一定需要条件。如果你想让循环完全没有任何条件,你可以写:
for (i = 0; 1 ; i++)
或
for (i = 0; ; i++)
但要注意i
在达到255后会溢出,并且每次都从零开始。
如果你不希望它无限循环,那么要么在循环中的某个地方放置break;
,要么在for
循环的条件字段内使用适当的条件。
说实话,我不确定为什么你的编译器甚至抱怨条件总是如此......
答案 5 :(得分:2)
那我应该放在那里?
使用较大的类型,例如int
类型。