C++ - For循环未执行

Fra*_*sco 0 c++ for-loop c++11

我不明白为什么这个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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当y达到255但在x上没有迭代时,这不起作用

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这也行不通:

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

0x5*_*453 5

您的第一个示例y为每次迭代声明一个新的从0开始x.

您的第二个和第三个示例不会重置y迭代之间的值x,因此只会y执行第一个循环.y跳过剩余的循环,因为y它已经等于256.

改变你的第二个例子如下:

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)