Nó sẽ làm việc chứ? Vâng.
Bạn có nên sử dụng nó? Không.
Loại tối ưu hóa vi mô này sẽ có ý nghĩa nếu:
bạn đã xem mã mà trình biên dịch tạo ra để thực hiện điều này một cách đơn giản (gán và tạm thời) và quyết định rằng phương pháp XOR tạo mã nhanh hơn
bạn đã định hình ứng dụng của mình và thấy chi phí của cách tiếp cận đơn giản vượt xa sự rõ ràng của mã (và dẫn đến tiết kiệm trong khả năng duy trì)
Đến điểm đầu tiên, trừ khi bạn thực hiện phép đo này, bạn nên tin tưởng vào trình biên dịch. Khi ngữ nghĩa của những gì bạn đang cố gắng làm rõ ràng, có rất nhiều thủ thuật mà trình biên dịch có thể làm, bao gồm sắp xếp lại quyền truy cập biến để không cần hoán đổi, hoặc thực hiện bất kỳ hướng dẫn cấp độ máy nào cung cấp nhanh nhất trao đổi cho một loại dữ liệu nhất định. "Thủ thuật" như trao đổi XOR khiến trình biên dịch khó nhìn thấy những gì bạn đang cố gắng thực hiện và do đó làm cho nó ít có khả năng áp dụng các tối ưu hóa như vậy.
Đến điểm thứ hai, bạn đạt được gì cho sự phức tạp thêm vào? Ngay cả khi bạn đã đo và thấy cách tiếp cận XOR nhanh hơn, liệu điều này có đủ tác động để biện minh cho cách tiếp cận ít rõ ràng hơn không? Làm sao bạn biết?
Cuối cùng, bạn nên xem xét liệu có chức năng trao đổi tiêu chuẩn cho nền tảng / ngôn ngữ của bạn hay không - ví dụ, C ++ STL, cung cấp chức năng hoán đổi mẫu sẽ có xu hướng được tối ưu hóa cao cho trình biên dịch / nền tảng của bạn.