Здравствуйте, <Аноним>, Вы писали:
LG>>этот метод : при любых ли значениях и типах А и В это будет работать?
[skip]
А>Кстати вариант с xor освобождает от забот с переполнением...
Вариант с xor не будет работать если (A==B) и (A!=0) Тогда после выполнения и в A и в B будут нули

... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, tasman, Вы писали:
T> Вариант с xor не будет работать если (A==B) и (A!=0) Тогда после выполнения и в A и в B будут нули
Откуда такая уверенность?
a=b=x;
a^=b; // a=x^x=0
b^=a; // b=x^0=x
a^=b; // a=0^x=x
Этот алгоритм основан на свойствах любой коммутативной группы, и нулевые элементы здесь не причём.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, tasman, Вы писали:
T>> Вариант с xor не будет работать если (A==B) и (A!=0) Тогда после выполнения и в A и в B будут нули
К>Откуда такая уверенность?
К>К>a=b=x;
К>a^=b; // a=x^x=0
К>b^=a; // b=x^0=x
К>a^=b; // a=0^x=x
К>
К>Этот алгоритм основан на свойствах любой коммутативной группы, и нулевые элементы здесь не причём.
Воббще xor дает ответ на вопрос "разные ли биты?" в виде бита 1 или 0. С таким же успехом можно использовать ответ на вопрос "одинаковые ли биты?". Напр. в виде логического NOT (инвертирование) на результат XOR.