A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© to_love 中级黑马   /  2015-8-22 14:14  /  2898 人查看  /  39 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int b;
int a = 7;
b = (++a) + (a++);
   
printf("b=%d, a=%d\n", b, a);

39 个回复

倒序浏览
b等于16,a等于9,
回复 使用道具 举报
b=15,a=8
回复 使用道具 举报
b=16     a=9
回复 使用道具 举报
int b;
int a = 7;
b = (++a) ;
b=b+ (a++);
   
printf("b=%d, a=%d\n", b, a);
结果跟上面是一样的
回复 使用道具 举报 1 0
b=15   a=9
回复 使用道具 举报
b=16,a=9
回复 使用道具 举报
b = (++a) + (a++);
将这个拆分下,
++a 表达式的值是8(将a+1当作++a的值)
a++ 表达式的值是   (将a的值当作a++的值, 而此时a是8(前面传递过来) 所以a++是8 )
所以b=16
a=9
回复 使用道具 举报 1 0
b等于15,a等于9
回复 使用道具 举报
b=16,a=9       8#的解释很清楚
回复 使用道具 举报
++a 和 a++对a的作用一样都是相当于a+1,不一样的地方在于++a是先把a加1
再赋值,所以++a的值也是a+1,而a++是先赋值后加1,所以a++的值等于a;

所以b = (7+1)+ (7+1)= 16,a = 7 + 1 + 1 = 9.
回复 使用道具 举报
b = 16,a = 9
回复 使用道具 举报
16   9 无误
回复 使用道具 举报

貌似不对,可以运行看看。a++,已经把a加成8了,所以8+8=16.
回复 使用道具 举报
应该是15,9吧,a++和++a表达是的值分别为7,8.视频讲义里面有这一块的联练习 呢,
回复 使用道具 举报
tr2e 中级黑马 2015-8-24 11:07:05
16#
本帖最后由 tr2e 于 2015-8-24 11:11 编辑

有的人自己错了还一本正经的胡说八道
回复 使用道具 举报
tr2e 中级黑马 2015-8-24 11:10:03
17#
就不能运行验证吗?

打脸专用.jpg (41.21 KB, 下载次数: 30)

打脸专用.jpg
回复 使用道具 举报
学习了!顺序这个地方有点迷糊!
回复 使用道具 举报
正在看运算符的优先级 ,你的这个应该无关,是赋值的先后
回复 使用道具 举报
to_love 发表于 2015-8-23 11:15
貌似不对,可以运行看看。a++,已经把a加成8了,所以8+8=16.

我怎么觉得是15.9呢,之前看视频讲义里面说a++和++a表达式的值不一样恩。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马