int a=1 b=a++ + ++a

如题所述

事实上不是上面说的那样,把b的赋值语句分成两部分,即(a++)+(++a),其中,先执行++a,则a的值现在变成了2;
a++在当前语句里拿的是a的值(此时a值为2),而不是a自增的值,因为此时的(a++)是a的拷贝,一个临时变量int
temp里放着的,而在a所在的内存里,这个自增是已经完成了的,注意是a的内存,不是那个临时变量temp!
所以这个式子的结构就清晰了,b=a+a(此时的a是++a后的结果,是2),b=4。
再看a自己本身的值,这个比较有趣,a经过了++a,变成了2,而a++改变的是内存中的a,不是临时变量,所以,此时的a=2+1=3。
总结一下,后++是拷贝的a原本的值到临时变量temp里面,在本条语句中用的是temp值,而非a的内存值,如果此时改变a的内存值(比如++a,本条语句内自增生效,改变a的内存值),对于temp没有任何影响,所以就有了后++下条语句生效(执行完本条语句后,temp变量即自动销毁),前++本条语句生效的说法。
这个前++和后++的具体运行过程,等你学了C++会有很深的了解。
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-03-04
这样理解是正确的,这个表达式的结果是b
=
4,
a
=
3
但在写代码的时候为了增加代码的可读性,一般很少在两个变量之间写那么多+号的
一般可以以加括号的形式b
=
(a++)
+
(++a)
或者是分成多行写b
=
a++;
++a;
b
+=
a;
第2个回答  2019-05-05
a++
//int
b=a;
a=+1;return
b;
++a
//return
a=+1;
//
后面是系统自动执行的
这样一目了然了吧
例如cout<
评论
0
0
加载更多
相似回答
大家正在搜