java中的一个小问题

topc0o0der 2014-10-10 07:29:27
	public static void main(String[] args){
int tmp = 2; int tmp2 = 3;
tmp ^= tmp2 ^= tmp ^= tmp2;
System.out.println(tmp);
System.out.println(tmp2);

}

为啥tmp交换完为0呢
...全文
103 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
topc0o0der 2014-10-30
  • 打赏
  • 举报
回复
java 里面的^=的汇编实现是两边同时压栈的。
-江沐风- 2014-10-11
  • 打赏
  • 举报
回复
分开写是交换,不分开写就不是交换了; 我记得c里好像是可以的;但Java这样写是不可以的;
厚德载物benr 2014-10-11
  • 打赏
  • 举报
回复
按位异或,你再试试,应该是0
发帖
非技术区

2.3w+

社区成员

Java 非技术区
社区管理员
  • 非技术区社区
加入社区
帖子事件
创建了帖子
2014-10-10 07:29
社区公告
暂无公告