为什么此代码在VS Debug模式下执行if ... else的两个分支

时间:2016-08-16 03:23:17

标签: c++ visual-studio

我在调试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;}

enter image description here enter image description here

那么,如何解释这种现象呢?有什么问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:0)

这是调试器在VS 2015中的工作方式。忽略它。

return 0;未执行,即使它看起来像。奇怪的行为,我也对此感到惊讶。

他们应该让箭头转到else语句,而不是之后的第一行,但由于某种原因他们没有。

请忽略它。如果您也想要提出功能请求:)