黑马程序员技术交流社区
标题:
代码的执行过程
[打印本页]
作者:
UT丶
时间:
2014-5-6 15:44
标题:
代码的执行过程
b = (++a) + (a++); 是不是先a+1 在加上b的值 b= (a+1) +(a+1) a=(++a)+1; 我的思路对吗?
作者:
兰闻天
时间:
2014-5-6 15:59
a=5;
b = (++a) + (a++);
先算++a,得到的是a=6,++a是先计算再赋值 所以把6给算式
b = 6+(a++);
再算a++,得到a=7,a++是先赋值再计算 所以把6给算式
b = 6+6=12
作者:
m573555543
时间:
2014-5-6 17:21
b = (++a) + (a++); 是不是先a+1 在加上b的值 b= (a+1) +(a+1) a=(++a)+1; 我的思路对吗?
对
++a 就是a+1
a++ 是 付完值后在加1.
作者:
tripleCC
时间:
2014-5-6 22:05
本帖最后由 tripleCC 于 2014-5-6 22:28 编辑
首先,不要在一个表达式里面对同一对象有多个副作用的操作。这种表达式的结果往往是未知的,取决于编译器。不要纠结于这种表达式,现实中没人会这么写的。。。gcc编译器和VC编译器执行结果是不一样的。。。想不通的话就看看毛爷爷的矛盾论,很给力的。。。
作者:
sabjiang
时间:
2014-5-6 22:35
简单一句话:
++在前,自增后计算
++在后,计算后自增
作者:
郑亚鸽
时间:
2014-5-6 23:03
分析思路:根据运算符的优先级和结合性,
1.计算 (++a),a的值加1变成6,
2.再计算(a++),a++表示在使用a之前a的值不变,故a的值依然是6
3.计算b,b的值等于6+6=12,这时a++在a使用过后a变成了7
4.最后结果a=7,b=12
这道题我也做过
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2