++ 用法

ccjjzz 2007-11-25 11:25:38
我有几个问题想问问各个专家

第一:
int i=100;
i=((i++ >>35)<<32)%10;
System.out.println("i= "+i);

i的结果是多少?为什么?谢谢

第二:
int i=100;
i=i++;
System.out.println("i= "+i);
i的结果是多少?为什么?谢谢
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowing_fly 2007-11-27
  • 打赏
  • 举报
回复
因为是先运算后赋值
++后的值存在了堆内存中没有指针引用它
ccjjzz 2007-11-27
  • 打赏
  • 举报
回复
第一个问题中++好像没有参加运算,为什么?谢谢!
ziqing_1_2_3 2007-11-26
  • 打赏
  • 举报
回复
int i=100;
i=i++; /*是赋值之后i++,左边i的值还是100,i++ 开辟新内存

i++ /*是赋值之后i++,i=101

System.out.println("i= "+i);
这样输出就为什么就是101
ccjjzz 2007-11-26
  • 打赏
  • 举报
回复
第一个问题中++是怎么参加运算的?以什么顺序参加运算?谢谢!
macrochao 2007-11-26
  • 打赏
  • 举报
回复
int i=100;
i++;
System.out.println("i= "+i);
这样输出就为什么就是101
ustbsjl 2007-11-26
  • 打赏
  • 举报
回复
第一个问题:
<<32相当于没移
>>35相当于>>3,01100100>>3 = 00001100 = 12
12%10 = 2

第二个问题:
i++后,i=101,而i++表达式仍然是100,后又赋值i=i++,即把i重新赋为100,最后才输出100
shadowing_fly 2007-11-25
  • 打赏
  • 举报
回复
第一个100转2进制0000000001101100右移35位在左移32位等于100除2的3次方等于12模10等于2
第二个就是100
dracularking 2007-11-25
  • 打赏
  • 举报
回复
1. 100二进制形式是 1100100
右移35再左移32即右移3位 2^0位已移出 所以最终结果不受++影响 即1100
即12 再%10 等于2

2. 100 貌似i++是另外开辟一块内存的

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧