【发布时间】:2023-03-21 08:00:01
【问题描述】:
我想知道有没有其他方法可以在一行中交换 2 个数字,当然没有第三个变量。
我知道这样做的一种方法:
b=a+b-(a=b)
或
a=a+b-(b=a)
两者相同(大约)。如果你知道,请帮帮我。
【问题讨论】:
-
为什么要这样做?使代码不可读只是为了避免使用第三个变量
-
a/=b=(a=a*b)/b;乘除而不是加减? -
您的两个示例方法都在 C 中调用未定义的行为,因为您正在修改变量并在同一表达式中使用其值。
-
使用 ^,如 a ^= (b ^= (a ^= b))
-
尝试寻找异或交换。
标签: c