สลับค่า 2 ตัวแปรโดยไม่ใช้ตัวแปรที่ 3 ใช้คณิตศาสตร์
วิธีที่ 1: บวก-ลบ (Addition/Subtraction)
x = x + y;
y = x - y; // y = (x+y) - y = x
x = x - y; // x = (x+y) - x = y
โปรแกรม
#include <stdio.h>
int main() {
int x, y;
printf("Enter x and y: ");
scanf("%d %d", &x, &y);
x = x + y;
y = x - y;
x = x - y;
printf("After swap: x=%d, y=%d\n", x, y);
return 0;
}
ผลลัพธ์
Enter x and y: 20 30
After swap: x=30, y=20
วิธีที่ 2: คูณ-หาร (Multiplication/Division)
x = x * y;
y = x / y;
x = x / y;
ข้อจำกัด: ต้องไม่มีค่า 0, และระวัง overflow
โปรแกรม
#include <stdio.h>
int main() {
int x, y;
printf("Enter x and y: ");
scanf("%d %d", &x, &y);
x = x * y;
y = x / y;
x = x / y;
printf("After swap: x=%d, y=%d\n", x, y);
return 0;
}
ผลลัพธ์
Enter x and y: 120 250
After swap: x=250, y=120
วิธีที่ 3: Bitwise XOR (เพิ่มเติม)
x = x ^ y;
y = x ^ y;
x = x ^ y;
ทำงานได้กับ integer ทุกค่า ไม่มีปัญหา overflow