黑马程序员技术交流社区
标题:
关于++a和a++的区别?
[打印本页]
作者:
胡铭
时间:
2014-4-27 11:45
标题:
关于++a和a++的区别?
本帖最后由 胡铭 于 2014-4-27 16:41 编辑
#include
int main(int argc, const char * argv[])
{
int b;
int a = 5;
b = (++a) + (a++);
printf("b=%d, a=%d\n", b, a);
return 0;
}
打印结果是什么?思路是什么?
作者:
执着的土豆
时间:
2014-4-27 11:50
本帖最后由 执着的土豆 于 2014-4-27 11:54 编辑
b = (++a) + (a++);中,++a 是先自加后使用,因此前面括号中执行过后,括号中得值是6,a得值变为6。后面括号中,a先使用后自加,因此执行后面括号,里面值是6,执行过后,a变为7,因此这句代码执行过后,也就是b=(++5)+(6++); 既b=(6)+(6); a=5+1+1. 因此执行结果是b=12,a=7
作者:
gmadong@163.com
时间:
2014-4-27 11:55
本帖最后由 gmadong@163.com 于 2014-4-27 11:57 编辑
int main(int argc, const char * argv[])
{
int b;
int a = 5;
b = (++a) + (a++);
printf("b=%d, a=%d\n", b, a);
return 0;
}
b=12, a=7
分析:(++a)是前加 就是先自加再用
(a++)是后加 就是先用再自加
b = (++a) + (a++);可能分解为
b = (a=(a+1)) + a;//a=6 b=12
a=a+1 ;//a +1 = 7
作者:
戴文婷
时间:
2014-4-27 13:41
(++a) + (a++);
++a 是,比如,a=5,看到++a可以直接看成a=6
a++是,a=5但是碰到;号再+1,也就是;号之后,a=6
作者:
执着的土豆
时间:
2014-4-27 13:48
戴文婷 发表于 2014-4-27 13:41
(++a) + (a++);
++a 是,比如,a=5,看到++a可以直接看成a=6
a++是,a=5但是碰到;号再+1,也就是;号之后,a=6 ...
对,可以那样理解。
作者:
桑托尔
时间:
2014-4-27 16:48
++a 和 a++的区别就是,前者是先自加1,后代入计算。后者是先执行计算,之后再自加1。
你这个题目a进行过两次自加之后 ,a的值变成7基本上不用考虑了。
重点是看b。
(++a)是先令a进行自加,即5+1=6,再将6带入式中。同时(a++)时,a值已经为6,是将a值6先带入算式中计算,计算完毕后再进行加。所以在这题里无论是(a++)还是(++a)都是6
相加得 b = 12
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2