出于某种原因,Visual Studio不会介入此代码,我无法看到变量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];
}
}
}
答案 0 :(得分:6)
从我所看到的
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];
}
}
}
是无限循环,没有可见的副作用,因为k
总是在循环内重置为零。 (注意意外分配)。没有可见副作用的无限循环是C ++中未定义的行为。这意味着编译器可以做任何事情。例如,它可以丢弃循环,这意味着你无法输入它 - 这很可能发生了。由于它是未定义的行为,它甚至可能导致机器着火。
答案 1 :(得分:2)
您在此行使用分配而非比较:
if(k=0)
答案 2 :(得分:2)
考虑升级C4706的警告级别。我不记得确切的编译器开关,但它可能类似于/ W14706。
答案 3 :(得分:1)
我认为你错过了Voo指出的'='
声明必须为if(k==0)
您的处理器比断点分析快得多。当你的代码到达那个循环时,它已经完成,然后才能检查断点停止。如果你停止该循环上面的代码它将工作,但在循环它不会由于处理的速度。尝试在循环中添加睡眠,然后您可以进入循环。
答案 4 :(得分:1)
答案 5 :(得分:0)
我认为你应该if(k==0)
。
答案 6 :(得分:0)
如果编译器是智能的(k=0)
将被优化,并且您无法步入if
,至少在指令级别。