这个代码如何交换这两个数字?

2024-06-12 02:46:21 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Swapping two variable value without using 3rd variable

我在Quora上发现了这个密码。 对于C:

a^=b^=a^=b;

对于Ruby/Python:

^{pr2}$

Tags: 密码valuevariablewithoutusingrubytwoquora
2条回答

C示例使用了几个愚蠢的技巧来交换这两个数字,您可以在identical question中了解到这一点。在

Ruby/Python示例使用的是元组解包,这一方法更加合理/易读。在

更多细节:

C:这是大肆吹嘘的没有第三个变量的掉期的变体,但它不可读,行为不明确(正如基里连科所指出的),而且通常是个坏主意。整数版本存在要引导的溢出问题。在C++中,只使用^ {CD1}},因为它只是工作。编写交换方法时要非常小心的一件事是,可能会将同一件事传递两次,尤其是在使用C中的引用或指针时

Ruby/Python:一个元组由a和b的值构成,对逗号分隔的变量列表的赋值是通过拆分匿名元组并分配单个变量值来解释的。这个方法确实使用了“第三个变量”,即匿名元组。在

a ^= b ^= a ^=b;

^是二进制异或运算符。注意,这段代码有一个未定义的行为:a和{}的值在两个序列点之间被修改两次。在

相关问题 更多 >