C ++-未执行For循环

时间:2018-10-26 17:32:17

标签: c++ c++11 for-loop

我不明白为什么此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();
        }
    }
}

1 个答案:

答案 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();
        }
    }
}