Swapping two variables without a temporary variable

A = 5;
B = 3;

A = A + B;   /* A = 8 */
B = A - B;   /* B = 5 */
A = A - B;   /* A = 3 */

/* alternate  way is ^, XOR */

A = 5;
B = 3;

A = A ^ B;   /* A = 6 */
B = A ^ B;   /* B = 5 */
A = A ^ B;   /* A = 3 */