se 变量交换

zhouixi 2017-02-23 03:10:53


int x=10;
int y=5;
y=x+(x = y)*0;
System.out.println("y="+y+" x="+x);

y=10 x=5


这里面运行步骤是怎样的。
括号里面的x=y(5)
这里的赋值为y(5)了。前面的依然是10
y=(x)10+0;

这里面的两个X应该不是同一个x吧。
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼 2017-02-24
  • 打赏
  • 举报
回复
这个真没想到 不过,我是不会在程序里出现这种潜在bug的语句的,也决不允许手下的人这么写 这种写法除了用来装B之外,没有任何实际意义
root3 2017-02-23
  • 打赏
  • 举报
回复
牛,还能这样写,怎么想的!
zhouixi 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 ryuugu_rena 的回复:
程序是从左往右算的, y=(x = y)*0+x; 你这样写就是x和y都=5了。
y=10-(5)*0;是吧。
IT油条 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 ryuugu_rena 的回复:
程序是从左往右算的, y=(x = y)*0+x; 你这样写就是x和y都=5了。
正解、、
ryuugu_rena 2017-02-23
  • 打赏
  • 举报
回复
程序是从左往右算的, y=(x = y)*0+x; 你这样写就是x和y都=5了。

62,615

社区成员

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

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