C++ 为什么这段代码在VS调试模式下执行if…else的两个分支

C++ 为什么这段代码在VS调试模式下执行if…else的两个分支,c++,visual-studio,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)

我在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;}
#包括
使用名称空间std;
int main()
{
int模式=1;
int size=1;
如果(模式==0)
{

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

返回0;
不会执行,即使看起来是这样。奇怪的行为,我也对此感到惊讶

他们应该让箭头指向
else
语句,而不是它后面的第一行,但出于某种原因,他们没有这样做


忽略它。如果你想,你也可以发出功能请求:)

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

返回0;
不会执行,即使看起来是这样。奇怪的行为,我也对此感到惊讶

他们应该让箭头指向
else
语句,而不是它后面的第一行,但出于某种原因,他们没有这样做


忽略它。你也可以提出功能请求:)

我不确定你遇到的问题是什么。你能详细解释一下吗?你可以看到pic1和pic2,并尝试一步一步地执行代码。你可以使用反汇编窗口了解更多关于实际执行的内容:)也可以看到一个类似的例子r不久前我遇到的问题:我不确定您遇到的问题是什么。请您详细解释一下好吗?您可以看到pic1和pic2,并尝试一步一步地执行代码。您可以使用反汇编窗口了解有关实际执行内容的更多信息:)也可以看到我不久前遇到的类似问题:如何执行这是怎么回事?编译器有什么问题吗?@zhangoniliste这只是一个功能。怎么会这样?编译器有什么问题吗?zhangoniliste这只是一个功能。