我在vs2013 / 2015/2008中调试某些代码时遇到了一些问题。
#include <iostream>
using namespace std;
int main()
{
int mode = 1;
int size = 1;
if (mode == 0)
{
cout << "mode = 0" << endl;
}
else
{
if (mode == 1)
{
if (size > 0)
{
cout << "mode=1,size=1" << endl; //in debug mode will execute this sentence
}
else
return 0; //however,when I Step in (F10),this will also be executed but have no influence.But When I insert a breakpoint in there and press F5, will not break in there
}
else if (mode == 2)
{
if (size > 0)
{
cout << "mode=2,size=1" << endl;
}
else
return 0;
}
}
return 1;}
那么,如何解释这种现象呢?有什么问题吗?我该如何解决呢?
最佳答案
这就是调试器在VS 2015中的工作方式。忽略它。return 0;
不会执行,即使看起来像。行为怪异,我也为此感到惊讶。
他们应该使箭头转到else
语句,而不是其后的第一行,但是由于某些原因,他们没有这样做。
只是忽略它。您也可以提出功能请求:)
关于c++ - 为什么此代码在VS Debug模式下执行if ... else的两个分支,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38966163/