C++中,a++、a+=1、a=a+1、++a 有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:18:11
如题。应该如何区别它们呢?a++和++a很容易搞错。

a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值
a+=1: 事实上相当于++a
a=a+1: 虽然有点雷同于a+=1,但不同的是此时右值的a和1做相加操作,形成一个副本然后赋值给a,所以有额外操作
++a:将a自增1并返回a
鉴于a++和++a的差别,C++Primer建议用++a作为for循环的递增量。
以上讨论不仅限于int,还着重于对类的重载设计时的考虑。

例如a=2;
a++;输出结果为2;但是内存中它的值自加1了。(先输出a再运算)
例如a=2;
++a;输出结果为3;内存中也是3.(先运算a再输出值)。
例如a=2;
a+=1;意思等同于a=a+1;

a++表示在一个语句中,也就是在分号结束时先不加1,直接代入a的值计算,之后在进行下一条语句计算时,a的值变成了a+1.
a+=1表示a=a+1,也就是把a+1的值赋给a。
++a表示在一条语句中,先让a的值加上1,在参与计算。

a++ 先取值再自加
++a 先自加再取值
a+=1 等同 a=a+1

cout<<a++;
cout<<a;

cout<<a++
cout<<a;
你会知道区别的