Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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
C++ 为什么我不能在VisualStudio中进入这个循环_C++ - Fatal编程技术网

C++ 为什么我不能在VisualStudio中进入这个循环

C++ 为什么我不能在VisualStudio中进入这个循环,c++,C++,由于某些原因,VisualStudio将不会介入此代码,并且我看不到变量k和p的内容 for(int k=0; k<6; k++) { for(int p=0; p<6; p++) { if(k=0) { levelToDraw[k][p] = Le

由于某些原因,VisualStudio将不会介入此代码,并且我看不到变量k和p的内容

           for(int k=0; k<6; k++)
            {
                for(int p=0; p<6; p++)
                {
                    if(k=0)
                    {
                        levelToDraw[k][p] = LevelOne[k][p];
                    }
                    else
                    {
                        levelToDraw[k][p] = LevelOne[k-1][p];
                    }
                }
            }

for(int k=0;k您在此行中使用的是assignemnt而不是比较:

 if(k=0)

我认为如果编译器是智能的,那么你应该使用
if(k==0)
如果编译器是智能的
(k=0)
将被优化掉,并且你不能进入
if
,至少在指令级别上是这样。

我认为你漏掉了Voo指出的一个'='

如果(k==0),则语句必须是


您的处理器比断点分析快得多。当代码到达该循环时,在检查断点停止之前,它已经完成。如果您在该循环上方停止代码,它将工作,但在循环上,由于处理速度的原因,它将不工作。尝试在循环中添加睡眠,那么您可能能够进入循环。

Sinc当你在文本上循环时,编译器可能正在优化代码。例如,它可能正在展开循环

您可以尝试关闭以进行验证

从我所能看到的情况来看,删除诸如if(k=0)
之类的决定因素当然也会有所帮助。

        for(int k=0; k<6; k++)
        {
            for(int p=0; p<6; p++)
            {
                if(k=0)
                {
                    levelToDraw[k][p] = LevelOne[k][p];
                }
                else
                {
                    levelToDraw[k][p] = LevelOne[k-1][p];
                }
            }
        }

for(int k=0;k考虑升级的警告级别。我不记得确切的编译器开关,但它可能类似于/W14706。

不会导致中断等。编译器会跳过它,只是旁边有一个注释:
if(k=0)
当然不是您想要的。这与手头的问题完全没有关系(对于我来说,删除赋值的代码也可以在VS2012中轻松完成)。编译器对它进行了优化,因为if(k=0)总是会是真的。编译器注意到这是一个无限循环,并完全丢弃了它,而这一点也不能回答他的问题。编译器可能正在优化循环,看到什么都没有发生,这就是为什么他不能…@Zeks somethinghappen@Zeks真的吗?VS编译器会在调试mo中进行这样的优化de?听起来是一个非常糟糕的主意,而且在任何情况下,你仍然能够进入循环,因为它仍然必须完成else分支的赋值,并且不能被优化掉。因此它必须对代码进行足够的分析,以确定它是一个无限循环,然后..实际上允许它完全删除循环吗?不知道b但我希望不是。不管怎样,这似乎是一个非常聪明的调试模式优化。瞧,我只是在理论上,因为我不熟悉VS编译器。结果证明我的猜测是正确的。这不是问题。嘿,我完全错过了编译器优化它的真正原因:)你确实是正确的