【发布时间】:2014-01-17 12:27:58
【问题描述】:
这两个宏有什么区别?
#define swap(a, b) (((a) ^ (b)) && ((a) ^= (b) ^= (a) ^= (b)))
或者
#define swap(a, b) (((a) ^ (b)) && ((b) ^= (a) ^= (b), (a) ^= (b)))
我看到了第二个宏here,但不明白为什么它不像第一个那样写?我错过了什么特殊原因吗?
【问题讨论】:
-
@quamrana 感谢格式化
-
还有@user3075488
标签: c bit-manipulation swap undefined-behavior sequence-points