a++是先取值后+1;++b是先+1后取值。
a的初始值是1,b的初始值是10
进入循环 b-=a; b=b-a; b=9; a++; a=a+1; a=2;
while 条件 b--<0 b=2<0 不满足循环条件,结束循环 b--; b=b-1; b=8
输出结果,a=2 ;b=8;
while()里面还有个b--
a++先取值后+1,++a先+1后取值
#include <iostream>
#include <time.h>
#include <map>
using namespace std;
int main()
{
int a = 1, b = 10;
do
{
//b = b - a, 所以b = 1
b -= a;
a++;//因为是单独的一句话,所有a++和++a的结果是一样
} while (b-- < 0);//先判断b < 0 是否成立,然后运算b -= 1;
//运行结果:
//第一次循环: b = 8; a = 2, 因为b > 0所以只运行了一次
//循环体重修改为
a = 1, b = 10;
do
{
b -= a++;//先运行b = b - a, 再运行 a++
} while (b-- < 0);//先判断b < 0 是否成立,然后运算b -= 1;
//循环体重修改为
a = 1, b = 10;
do
{
b -= ++a;//先运行a++, 再运行 b = b - a
} while (b-- < 0);//先判断b < 0 是否成立,然后运算b -= 1;
return 0;
}
首先do while 的执行,先执行一次do才开始循环。
1.do的时候,b-=a,此时b=9,a=1,然后a++,之后a=2;
2.while的判断条件里面b--<0,先判断b<0,此时b=9,为false,跳出循环,再b--,之后b=8,
所以打印出来的是a=2,b=8