Swapping Of Two Numbers Without Temporary Variable in C
In this tutorial, we are going to see how to swap two numbers without using a temporary variable in C. In computer science, it is a common operation to swap two variables, and even if some languages implement this functionality, we often see programmers recode the swap. We can make a permutation without a temporary variable with just two operations.
a = a + b - b b = a + b - a
OR:
a = (a + b) - b b = (a + b) - a
(a + b) can be used as a temporary variable.
There are three ways to swap two numbers in C, by using temporary variable, without temporary variable, or by creating a function.
Swapping Of Two Numbers Without Temporary Variable Using Pointers
#include <stdio.h> void swap(int *,int*); int main () { int a, b; printf("Enter two numbers: "); scanf("%d%d", &a, &b); printf("Before Swapping : a=%d,b=%d\n",a,b); swap(&a,&b); printf("After Swapping : a=%d,b=%d\n",a,b); return 0; } void swap(int *a,int *b){ *a += *b; *b = *a-*b; *a = *a-*b; }
Output:
Enter two numbers: 1 2 Before Swapping : a=1,b=2 After Swapping : a=2,b=1
Swapping Of Two Numbers Without Temporary Variable Using Macro
#include <stdio.h> #define SWAP(x,y) x ^= y, y ^= x, x ^= y int main () { int a, b; printf("Enter two numbers: "); scanf("%d%d", &a, &b); printf("Before Swapping : a=%d,b=%d\n",a,b); SWAP(a,b); printf("After Swapping : a=%d,b=%d\n",a,b); return 0; }
Output:
Enter two numbers: 1 2 Before Swapping : a=1,b=2 After Swapping : a=2,b=1