C语言使用异或运算交换两个整数变量的值

这段代码演示了如何使用C语言中的异或运算符(^)来交换两个整数变量的值,而无需使用临时变量。

#include <stdio.h>

int main() {
    int a;
    int b;
    while(1){
        scanf('%d %d', &a, &b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        printf('%d %d
', a, b);
    }
    return 0;
}

代码解释:

  1. #include <stdio.h>: 包含标准输入输出库,以便使用 scanfprintf 函数。

  2. int main() { ... }: 程序的主函数,程序从这里开始执行。

  3. int a; int b;: 声明两个整型变量 ab 用于存储要交换的两个整数。

  4. while(1) { ... }: 创建一个无限循环,允许用户反复输入整数对进行交换,直到手动终止程序。

  5. scanf('%d %d', &a, &b);: 从用户输入中读取两个整数,分别存储到变量 ab 中。

  6. a = a ^ b;:ab 的值进行异或运算,并将结果存储回 a

  7. b = a ^ b;: 将当前 a 的值(包含了 ab 的初始值的异或结果)与 b 进行异或运算,并将结果存储回 b

  8. a = a ^ b;: 将当前 a 的值与 b 进行异或运算,并将结果存储回 a

  9. printf('%d %d\n', a, b);: 打印交换后的 ab 的值。

异或运算交换原理:

异或运算符(^)具有以下特性:

  • 任何数与自身异或结果为0: a ^ a = 0
  • 任何数与0异或结果为自身: a ^ 0 = a
  • 异或运算满足交换律和结合律: (a ^ b) ^ c = a ^ (b ^ c)

利用这些特性,通过三次异或运算,可以实现两个变量的值交换。

注意事项:

  • 此代码使用无限循环,需要手动终止程序运行。
  • 在实际应用中,应根据需要修改循环条件或添加退出机制。

原文地址: https://www.cveoy.top/t/topic/Ja2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录