黑马程序员技术交流社区

标题: C和java赋值的区别 [打印本页]

作者: che201311    时间: 2013-11-21 23:06
标题: C和java赋值的区别
a=b+(a=b)*0
上面这个式子在java中可以实现两数的交换(不考虑越界,且只考虑整型),但是在c语言中却不行,有高手 能讲一讲为什么吗?详细一点,谢谢。。

作者: qw无语    时间: 2013-11-21 23:23
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的话,不了解,目侧是从()先计算,在计算其他的。

作者: che201311    时间: 2013-11-21 23:55
那在C语言中呢 和java的机制呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2