C++ 用步骤分析代码

C++ 用步骤分析代码,c++,C++,我知道代码的输出是82,但是有人能告诉我 请在每一步后更换i和j 以下是代码的链接: using namespace std; int main() { int i; int j = 0; for ( i = 0; i < 7; i++) { if(i % 2 == 1) { i = i + 2; j++; } else { j

我知道代码的输出是82,但是有人能告诉我 请在每一步后更换i和j

以下是代码的链接:

using namespace std;

int main()
{
    int i; int j = 0;
    for ( i = 0; i < 7; i++)
    { 
        if(i % 2 == 1) 
        { 
            i = i + 2; j++;
        }
        else
        { 
            j = j + 2; 
        }
        j--;
    }

    cout << i <<" "<< j;
}
使用名称空间std;
int main()
{
int i;int j=0;
对于(i=0;i<7;i++)
{ 
如果(i%2==1)
{ 
i=i+2;j++;
}
其他的
{ 
j=j+2;
}
j--;
}
可能是

   int i; int j = 0;           // i==? j==0
----------------------------------------------
   for ( i = 0;                // i==0 j==0
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==0 j==2
   j--;                        // i==0 j==1
                       i++)    // i==1 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==3 j==2
   j--;                        // i==3 j==1
                       i++)    // i==4 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==4 j==3
   j--;                        // i==4 j==2
                       i++)    // i==5 j==2
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==7 j==3
   j--;                        // i==7 j==2
                       i++)    // i==8 j==2
----------------------------------------------
                i < 7;         // FALSE
inti;intj=0;//i==?j==0
----------------------------------------------
对于(i=0;//i==0 j==0
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==0 j==2
j--;//i==0 j==1
i++//i==1 j==1
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==3 j==2
j--;//i==3 j==1
i++//i==4j==1
----------------------------------------------
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==4 j==3
j--;//i==4 j==2
i++//i==5j==2
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==7 j==3
j--;//i==7 j==2
i++//i==8 j==2
----------------------------------------------
i<7;//错误
它将是

   int i; int j = 0;           // i==? j==0
----------------------------------------------
   for ( i = 0;                // i==0 j==0
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==0 j==2
   j--;                        // i==0 j==1
                       i++)    // i==1 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==3 j==2
   j--;                        // i==3 j==1
                       i++)    // i==4 j==1
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // FALSE
   j = j + 2;                  // i==4 j==3
   j--;                        // i==4 j==2
                       i++)    // i==5 j==2
----------------------------------------------
                i < 7;         // TRUE
   if(i % 2 == 1)              // TRUE
   i = i + 2; j++;             // i==7 j==3
   j--;                        // i==7 j==2
                       i++)    // i==8 j==2
----------------------------------------------
                i < 7;         // FALSE
inti;intj=0;//i==?j==0
----------------------------------------------
对于(i=0;//i==0 j==0
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==0 j==2
j--;//i==0 j==1
i++//i==1 j==1
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==3 j==2
j--;//i==3 j==1
i++//i==4j==1
----------------------------------------------
i<7;//正确
if(i%2==1)//FALSE
j=j+2;//i==4 j==3
j--;//i==4 j==2
i++//i==5j==2
----------------------------------------------
i<7;//正确
如果(i%2==1)//TRUE
i=i+2;j++;//i==7 j==3
j--;//i==7 j==2
i++//i==8 j==2
----------------------------------------------
i<7;//错误

简化了你的代码,从
if true
中删除
j++
,在
if false
中将
j=j+2
更改为
j++
,这样
if else
之后的
j--
将被删除。而且理解代码也变得更容易

int main()
{
    int i; int j = 0;
    for ( i = 0; i < 7; i++)
    { 
        if(i % 2 == 1) 
        { 
            i = i + 2;//add 2 in i for odd i
        }
        else
        { 
            j++; //add 1 in j for even i
        }

    }

    cout << i <<" "<< j;
}






i=8(i通过从
if-true
中删除
j++
,将
j=j+2
更改为
if-false
中的
j++
来简化您的代码,以便删除
if-else
之后的
j--
,并且理解代码变得更容易

int main()
{
    int i; int j = 0;
    for ( i = 0; i < 7; i++)
    { 
        if(i % 2 == 1) 
        { 
            i = i + 2;//add 2 in i for odd i
        }
        else
        { 
            j++; //add 1 in j for even i
        }

    }

    cout << i <<" "<< j;
}






i=8(我在现场看到调试器了吗?现在是寻找魔法工具的好时机:-)如果你只是插入一份
的副本,你就不能在现场看到调试器了吗?现在是寻找魔法工具的好时机:-)如果你只是插入一份
的副本,可能有人觉得这不是问题的答案。因为你修改了原始代码,这显然不是对原始代码的逐级解释。你得到了相同的结果,但这有点无关紧要。@4386427否决票是对我之前的答案的,我在那里跟踪了原始代码e、 但由于该代码看起来效率低下(有不必要的增量和减量),我只是修改了它。很高兴知道它有帮助。也许有人觉得这不是问题的答案。因为你修改了原始代码,这显然不是对原始代码的逐级解释。你得到了相同的结果,但这有点无关紧要。@4386427否决票是对我先前的答案的,我在那里跟踪了原始代码代码。但由于代码看起来效率低下(有不必要的增量和减量),我只是修改了它。很高兴知道它有帮助。非常感谢你的帮助,我很快理解了它,你展示了每一步,谢谢:谢谢:谢谢:谢谢你的帮助,我很快理解了它,你展示了每一步,谢谢:D
i=3 (odd so add 2)
i=4 (i++ for-loop)
j=1 (unchanged)
i=4 (even)
j=2 (even so j++)
i=5 (i++ for-loop)
i=7 (odd so add 2)
j=2 (unchanged)
i=8 (i++ for-loop)
i=8 (i<7 for-loop exit)