我想知道是否有任何其他方式交换一行中的2个数字,当然没有第三个变量。如何在C中的一行中交换两个变量?
我知道这样做的一种方法:
b=a+b-(a=b)
或
a=a+b-(b=a)
都是相同的(约)。如果你知道,那么请帮助我。
我想知道是否有任何其他方式交换一行中的2个数字,当然没有第三个变量。如何在C中的一行中交换两个变量?
我知道这样做的一种方法:
b=a+b-(a=b)
或
a=a+b-(b=a)
都是相同的(约)。如果你知道,那么请帮助我。
使用位操作的C.下面的交换两个变量:
if (a != b) {
a ^= b ^= a ^= b;
}
这是未定义的行为,因为同一个变量被修改了两次。 –
经常引用您可能寻找经典的回答是:
a^=b^=a^=b;
但,它在技术上是错误的,因为它在一个序列点之前多次改变相同的变量。
你为什么要这样做?为了避免使用第三个变量,使代码不可读取 –
'a/= b =(a = a * b)/ b;'乘法和除法而不是加法和减法? –
您的两个示例方法都会在C中调用未定义的行为,因为您正在修改变量并在同一表达式中使用其值。 – verbose