|
本帖最后由 rosynirvana 于 2014-4-21 15:05 编辑
执行这三句语句时,变量a, b中的值见下表:
变量a 变量b
执行前 a b
第一句 b-a b
第二句 b-a b-(b-a) = a
第三句 b-a+a=b a
也可以参考
http://bbs.ahalei.com/thread-2758-1-2.html 地板的回复
这种写法的由来:
在很久以前,存储器的价格非常昂贵,中间变量能省就省,所以就有人研究出了这种写法。
但是现在存储器的价格已经非常便宜了,没必要使用这种写法
而且
- int temp;
- temp = a;
- a = b;
- b = temp;
复制代码
这种写法容易被编译器识别,从而使用CPU的某些指令进行优化,加快运行的速度
但是这种写法并不一定正确,因为无符号整数的溢出是未定义的,保证正确的写法是使用位运算:
|
|