【发布时间】:2011-04-08 12:29:56
【问题描述】:
这个等式交换两个没有临时变量的数字,但使用算术运算:
a = (a+b) - (b=a);
如果没有算术运算,我怎么能做到这一点?我在考虑异或。
【问题讨论】:
-
你为什么要这样做?
-
顺便说一句,该代码的行为是未定义的。
a和b都可以在没有中间序列点的情况下读取和写入。首先,编译器有权在评估a+b之前评估b=a。 -
为什么对问题的人投反对票?他出于好奇问道。这是一个很好的问题,它让我们中的许多人了解了这种方法以及它的缺点。来吧,伙计们,你们怎么了?一票赞成。
-
问题中的“算术”方法不正确;它在标记此问题的语言(C、C++、ObjC)中不起作用。
-
-1 用于无用的问题。你得到了 XOR 答案,现在你评论说这还不够好。当然不是,这是愚蠢的异或技巧。使用临时变量并完成它。如果您有实际问题或真正的问题,请提出。投票结束。
标签: c++ objective-c c swap