我不明白为什么此for循环有效
void managingTable(unsigned char table[256][256][1])
{
for (unsigned int x = 0; x <= 255; x++)
{
for (unsigned int y = 0; y <= 255; y++)
{
doSomethingWithTable();
}
}
}
,并且当y达到255时退出x无效,而x上没有迭代保持为0
void managingTable(unsigned char table[256][256][1])
{
unsigned int x = 0;
unsigned int y = 0;
for (x; x <= 255; x++)
{
for (y; y <= 255; y++)
{
doSomethingWithTable();
}
}
}
这也不起作用:
void managingTable(unsigned char table[256][256][1])
{
unsigned int x = 0;
unsigned int y = 0;
for ( ; x <= 255; x++)
{
for ( ; y <= 255; y++)
{
doSomethingWithTable();
}
}
}
答案 0 :(得分:5)
您的第一个示例为y
的每次迭代声明了一个新的x
,从0开始。
您的第二个和第三个示例在y
的迭代之间不重置x
的值,因此仅执行第一个y
循环。由于y
已经等于256,因此跳过了其余的y
循环。
更改下面的第二个示例应该可以:
void managingTable(unsigned char table[256][256][1])
{
unsigned int x = 0;
for (x; x <= 255; x++)
{
unsigned int y = 0;
for (y; y <= 255; y++)
{
doSomethingWithTable();
}
}
}