Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

สลับค่าตัวเลข 2 ตัว โดยไม่ใช้ตัวแปรชั่วคราว (No Temp Variable) ใน C

สลับค่า 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