关于a++ 和++a的运算问题!

img


想问问这个问题!
a++不应该是先将a赋值为1然后和b-=a进行运算完之后再进行a+1吗?
那为什么会等于2,8呢?! 不应该是2 和9嘛?!
麻烦详细解释一下!最好是a++ 和++a 都详细一下!

img

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