黑马程序员技术交流社区
标题:
a++与++a的区别
[打印本页]
作者:
李会成
时间:
2013-1-26 14:49
标题:
a++与++a的区别
本帖最后由 李会成 于 2013-2-18 11:41 编辑
int a=3;
(a--)<<a;
(--a)<<a;
(a++)++
(++a)++能帮忙解释下a的值在运算中的变化吗?
作者:
祁振朋
时间:
2013-1-26 15:53
a++是先把a拿走运算,然后再++。++a是反过来,先++,再用++ 后的结果算。
(a--)<<a 3<<3 结果是24,再--,结果是23
(--a)<<a 2<<3 结果是16
(a++)++ 结果是5
(++a)++ 先算里面,再算外面,结果是5
在内存中是有一个临时变量存放a的数值
好像是这样的。
作者:
洪建超
时间:
2013-1-26 16:07
java 运算符优先计算顺序(由高到低)
--------------------------------------------------------------------------------
运算符类型 运算符
--------------------------------------------------------------------------------
Unary: 一元 +- ++ -[其余的]
Arithmetic(shift);算术(和移位) * / % + - << >>
Relational:关系 > < >= <= == !=
Logical(bitwise):逻辑(和按位) && || & / ^
Conditional(ternary:条件(三元) A>B?X:Y
Assignment: 赋值 =(以及复合赋值,如*=)
--------------------------------------------------------------------------------
>> 右移
>>> 右移,左边空出的位以0填充
<< 左移
作者:
王国伟.
时间:
2013-1-26 16:50
本帖最后由 王国伟. 于 2013-1-26 16:59 编辑
给你举个简单的例子吧
当a++或是++a单独出现时,a都是做自增加1运算,++放在前面或是后面结果是一样的。
所以
(a++)++或是(++a)++的结果是一样的。
当a++或是++a在给一个变量做赋值时:比如
int a=1;
y=a++;就是先把a的值赋给y在做自增加1,输出结果就是a=2,y=1
y=++a;就是a先做自增加1在赋值给y,输出结果为a=2,y=2
作者:
黄金龙
时间:
2013-1-26 17:24
int a=3;
sop((a--)<<a); //这里是3 <<2 前面的A没变,减了1后面的就得到了这个值 所以是12
a=3;
sop((--a)<<a); // 这里是2 << 2 前面的A减了1才给后面的 所以结果是8
a=3;
sop(a++);你那个就相当于这样 先赋值后加 所以是结果3 但是值是4了..
sop(a++);你那个就相当于这样 先赋值后加 所以是结果4 但是值是5了..
a=3;
sop(++a);你那个就相当于这样 先加后赋值 所以是结果4 值是4..
sop(a++);你那个就相当于这样 先赋值后加 所以是结果4 但是值是5了..
复制代码
未命名.jpg
(2.44 KB, 下载次数: 40)
下载附件
2013-1-26 17:24 上传
作者:
逍林游
时间:
2013-1-26 18:37
这涉及运算符优先级问题:自增++运算符优先级大于移位运算符,把括号去掉也没关系,结果一样!
作者:
dzr19850306
时间:
2013-1-27 09:10
int a=3;
(a--)<<a; // a-- 之后再做位移运算,是以2还是3呢。这个真不懂。
(--a)<<a;
(a++)++
(++a)++能帮忙解释下a的值在运算中的变化吗?
作者:
李培根
时间:
2013-2-18 11:41
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。
请勿再次发此类帖子了!
此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2