Обмен значений численных переменных (язык программирования C)

Тема: 
Линейные алгоритмы

Вводятся два числа, которые присваиваются двум разным переменным. Требуется в процессе выполнения программы обменять значения переменных друг на друга.

Решить данную задачу непосредственно, присвоив первой переменной значение второй, а второй - значение первой, нельзя. Например, если a = 5, а b = 6, то выполнив выражение a = b, получим число 6, присвоенное обоим переменным, в то время как число 5 будет утеряно. Следовательно, переменная b не сможет получить новое значение.

Поэтому в программу вводится еще одна, третья, переменная. Ее можно назвать "буферной", т.к. она служит лишь для обмена данных. В этой переменной сохраняется значение переменной a. После этого a присваивается значение b, а новое значение для b берется из "буферной" переменной.

#include <stdio.h>
main() {
	int a,b,c;
	scanf("%d", &a);
	scanf("%d", &b);
	printf("a=%d; b=%d\n", a, b);
	c = a;
	a = b;
	b = c;
	printf("a=%d; b=%d\n", a, b);
}

Существует еще один способ. В первую переменную можно записать сумму значений обоих переменных. Например, если a = 3, b = 9, то a получит новое значение, равное 12. Вторым действием присвоить переменной b значение, полученное как a - b. Т.е. 12 - 9 = 3. Таким образом b получит значение, ранее хранимое в a. После этого следует из a вычесть новое значение b и результат присвоить a: 12 - 3 = 9. Таким образом произойдет обмен без участия третьей переменной.

#include <stdio.h>
main() {
	int a,b,c;
	scanf("%d", &a);
	scanf("%d", &b);
	printf("a=%d; b=%d\n", a, b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d; b=%d\n", a, b);
}

Пример выполнения кода:

-7
3
a=-7; b=3
a=3; b=-7