Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个for循环是无限的? 我正在创建一种C++的扫雷程序,在运行了一些测试后,我发现,由于某种原因,我看不到,我的for循环之一永远不会结束。我已经查看了代码很长一段时间了,看不出原因。非常感谢你的帮助,我对C++有点陌生,而且很困惑。_C++ - Fatal编程技术网

为什么这个for循环是无限的? 我正在创建一种C++的扫雷程序,在运行了一些测试后,我发现,由于某种原因,我看不到,我的for循环之一永远不会结束。我已经查看了代码很长一段时间了,看不出原因。非常感谢你的帮助,我对C++有点陌生,而且很困惑。

为什么这个for循环是无限的? 我正在创建一种C++的扫雷程序,在运行了一些测试后,我发现,由于某种原因,我看不到,我的for循环之一永远不会结束。我已经查看了代码很长一段时间了,看不出原因。非常感谢你的帮助,我对C++有点陌生,而且很困惑。,c++,C++,代码如下: for (int r = 0; r <= 8; r++) { for (int c = 0; c <= 8; c++) { int num = 0; if (realmap[r][c] != 10) { if (r - 1 != -1 && realmap[r - 1][c] == 10) { num++;

代码如下:

for (int r = 0; r <= 8; r++)
{
    for (int c = 0; c <= 8; c++)
    {
        int num = 0;
        if (realmap[r][c] != 10)
        {
            if (r - 1 != -1 && realmap[r - 1][c] == 10)
            {
                num++;
            }
            if (r - 1 != -1 && c + 1 != 9 && realmap[r - 1][c + 1] == 10)
            {
                num++;
            }
            if (c + 1 != 9 && realmap[r][c + 1] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && c + 1 != 9 && realmap[r + 1][c = 1] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && realmap[r + 1][c] == 10)
            {
                num++;
            }
            if (r + 1 != 9 && c - 1 != -1 && realmap[r + 1][c - 1] == 10)
            {
                num++;
            }
            if (c - 1 != -1 && realmap[r][c - 1] == 10)
            {
                num++;
            }
            if (r - 1 != -1 && c - 1 != -1 && realmap[r - 1][c] == 10)
            {
                num++;
            }
            realmap[r][c] = num;
            Sleep(5000);
            cout << "test3";
        }
    }
}

for(int r=0;r在我看来,@Bart在这里是正确的。您有嵌套的循环,它们正在修改相同的变量。这通常是一个错误的迹象。请尝试重命名您的内部循环
r
c
变量。

我认为您的函数不会进入无限循环

原因是这些循环迭代器具有不同的作用域,在C++中是完全有效的。 但是您的代码有

sleep(5000)
,每次遇到它都会等待5000秒。 删除
睡眠
并尝试运行代码

if(r+1 != 9 && c+1 != 9 && realmap[r+1][c=1] ==10

我不知道你的代码的任何部分实际上做了什么或检查了什么,但这会在满足前两个条件的情况下将c重置为1,从而导致无限循环。

你是否尝试过使用调试器,如MVS?为什么嵌套循环修改r和c两次?Bart似乎走在正确的轨道上。你重新初始化了变量“r”和“c”为零,这将阻止外部循环完成。这些循环具有不同的作用域,这应该不是问题。您使用什么进行编译?那些用于循环语句的循环具有重新声明,这应该是非法的。嵌套的循环正在修改同名的不同变量。是的,它们是,但现在代码已被修改再次修改后,嵌套循环就消失了。睡眠是以毫秒为单位的