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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-11-21 23:06  /  1198 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a=b+(a=b)*0
上面这个式子在java中可以实现两数的交换(不考虑越界,且只考虑整型),但是在c语言中却不行,有高手 能讲一讲为什么吗?详细一点,谢谢。。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励~加油!

查看全部评分

2 个回复

倒序浏览
a=b+(a=b)*0
首先,这个写错了- -是这样的:a=b+(b=a)*0
然后java既然成功了,肯定是从左往右运行,遇到()再算()的
验证一下:  a=b+(b=a)*0+b;
这个时候 a=a+b; b=a; 并不是a=2b; 所以个人觉得是从左往右运行没错,遇到()算()。
C的话,不了解,目侧是从()先计算,在计算其他的。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
那在C语言中呢 和java的机制呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马