2013-08-23 2 views
-4

Я хочу знать, что есть другой способ обмена двух чисел в одной строке и, конечно, без третьей переменной.Как заменить две переменные в одной строке в C?

Я знаю, что один из способов сделать это:

b=a+b-(a=b) 

или

a=a+b-(b=a) 

оба они же (примерно). Если вы знаете, тогда, пожалуйста, помогите мне.

+1

Почему вы хотите это сделать? Сделать код нечитаемым, чтобы избежать использования третьей переменной –

+0

'a/= b = (a = a * b)/b;' Умножение и деление вместо сложения и вычитания? –

+0

Оба из ваших методов метода вызывают неопределенное поведение в C, поскольку вы изменяете переменную и используете ее значение в том же выражении. – verbose

ответ

-1

Использование бит вертел в C. После перестановки двух переменных:

if (a != b) { 
    a ^= b ^= a ^= b; 
} 
+5

Это неопределенное поведение, так как одна и та же переменная дважды изменяется. –

7

часто цитируемой классический ответ, который вы, вероятно, ищете это:

a^=b^=a^=b; 

Но, технически неправильный, поскольку он изменяет одну и ту же переменную более одного раза перед точкой последовательности.

Смежные вопросы