这个循环在C#中执行多少次?

时间:2017-09-22 11:30:15

标签: c#

int x = 1;
while (x++ < 5)
{
    if ((x % 2) == 0)
        x += 2;
}

问题是以下循环将执行多少次? 我可以看到第1个x等于1,第2个x等于2,第3个x等于4,我认为它会执行3次,但为什么答案是2次?

3 个答案:

答案 0 :(得分:5)

正如你所说,while循环的主体确实会执行两次,而不是三次。

这就是原因。

我将展开循环,以便我们可以看到会发生什么。

int x = 1;                 // x is now 1
while (x++ < 5)            // read the current value of x, which is 1
                           // then increase x by 1, giving it the value 2
                           // then compare the value we read (1) with 5
                           // since 1 < 5, we will execute the body of
                           // the while loop
{
    if (x % 2 == 0)        // x is equal to 2, "2 % 2" is equal to 0
                           // so execute the body of the if-statement
        x += 2;            // increase x by 2, giving it the value 4
}
// while (x++ < 5)         // read the current value of x, which is 4
                           // then increase x by 1, giving it the value 5
                           // then compare the value we read (4) with 5
                           // since 4 < 5, we will execute the body of
                           // the while loop
{
    if (x % 2 == 0)        // x is equal to 5, "5 % 2" is NOT equal to 0
                           // so do not execute the body of the if-statement
}
// while (x++ < 5)         // read the current value of x, which is 5
                           // then increase x by 1, giving it the value 6
                           // then compare the value we read (5) with 5
                           // since 5 < 5 is not true, we will NOT
                           // execute the body of the while loop

我们已经完成了

x的最终值为6

所以答案是,正如你所说,while循环的主体执行两次。

答案 1 :(得分:1)

您在++循环中使用while右侧运算符。因此,每当您完成此条件时,进入循环时x值将增加1。因此,您的x值将使用值1进行测试,然后递增1,使其在第一次进入循环时等于2。然后你满足if条件,将x值增加2.当你回到while条件时,x等于4.你再次进入测试值4,并再次将其值增加1.然后等于当第三次回到你的状态时,x等于5,所以你不再满足条件了。你刚刚输入了你的while循环两次,而不是三次。

答案 2 :(得分:1)

首先,您需要了解++的工作原理。

使用右边的++,值会增加但返回前一个值。

  • x++评估为1,但在循环中2x % 2 == 0x=4
  • x++评估为4,但在循环中5x % 2 != 0x=5
  • x++评估为5循环退出,x的最终值为6