int x = 1;
while (x++ < 5)
{
if ((x % 2) == 0)
x += 2;
}
问题是以下循环将执行多少次? 我可以看到第1个x等于1,第2个x等于2,第3个x等于4,我认为它会执行3次,但为什么答案是2次?
答案 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
,但在循环中2
为x % 2 == 0
,x=4
x++
评估为4
,但在循环中5
为x % 2 != 0
,x=5
x++
评估为5
循环退出,x
的最终值为6