C Interview Questions and Answers

 

How can I swap two values without using a temporary?

The standard hoary old assembly language programmer's trick is:



a ^= b;



b ^= a;



a ^= b;





But this sort of code has little place in modern, HLL programming. Temporary variables
are essentially free, and the idiomatic code using three assignments, namely



int t = a;



a = b;



b = t;





is not only clearer to the human reader, it is more likely to be recognized by the
compiler and turned into the most-efficient code (e.g. perhaps even using an EXCH
instruction). The latter code is obviously also amenable to use with pointers and
floating-point values, unlike the XOR trick.

Posted by:Richards