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 */