为什么我不能在Visual Studio中进入这个循环
Why cant I step into this loop in Visual Studio
由于某些原因,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];
}
}
}
从我可以看到
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++中未定义的行为。这意味着编译器可以做任何事情。例如,它可以丢弃循环,这意味着你不能进入它——这很可能就是发生的事情。由于它是未定义的行为,它甚至可能导致机器起火。
您在这一行使用assignemnt而不是比较:
if(k=0)
考虑提高C4706的警告级别。我记不起确切的编译器开关了,但它可能是/W14706之类的。
由于您在文本上循环,编译器可能正在优化代码。例如,它可以展开循环。
您可以尝试关闭编译器优化以进行验证。
去除像if (k=0)...
这样的行列式当然也有帮助。
我想你错过了Voo 指出的一个'='
该语句必须是if(k==0)
您的处理器比您的断点分析快得多。当您的代码到达那个循环时,它在检查断点停止之前就已经完成了。如果您停止该循环上方的代码,它会工作,但在循环上,由于处理速度的原因,它不会工作。试着在循环中添加睡眠,然后你就可以进入循环了。
我认为你应该选择if(k==0)
。
如果编译器是智能的,(k=0)
将被优化,并且您不能进入if
,至少在指令级别。
相关文章:
- Visual Studio 2017循环自动向量化问题
- Atmel Studio 7:ASF 库提供的 USART 中断处理程序仅在 main() 中遇到无限循环时工作一次?
- 为什么Visual Studio Compiler不在我的Mersenne-Twister实现中循环展开?
- 如何在Visual Studio(C++11)中处理相互依赖/循环依赖
- C++17 Visual Studio 中基于 for 循环的广义范围
- 当并行线程访问同一数据结构的其他成员时,正确的方法可以在Visual Studio上的OpenMP上并行循环
- C++Visual Studio 2017中,无法输入循环中的变量
- Visual Studio 2013 C 的迭代循环
- 使用C Visual Studio中的循环写入不同的文件名
- 使用 Visual Studio 2012 的无限循环C++
- Visual Studio 2010 中'getline'上的无限循环
- 虽然循环/算法问题c ++ visual studio 2012
- 我收到错误 C2059:语法错误:'}'使用 Visual Studio 2013 进行边做循环练习
- Visual-Studio:高效处理循环库依赖
- 为什么在C++(Visual Studio)中,control+P会导致无限循环
- C++Visual Studio-运算符重载中的Empty For循环导致调试错误
- 在发布模式下测量Visual Studio(C++)中循环内方法的运行时时出错
- For循环在c++的发布版本(visual studio)中无限运行
- 如何在原生c++中并行化简单的for循环,使其在visual studio 2010 express中工作
- 从函数返回将进入Visual Studio 2012的无限循环