C语言使用异或运算交换两个整数变量的值
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;
}
代码解释:
-
#include <stdio.h>: 包含标准输入输出库,以便使用scanf和printf函数。 -
int main() { ... }: 程序的主函数,程序从这里开始执行。 -
int a; int b;: 声明两个整型变量a和b用于存储要交换的两个整数。 -
while(1) { ... }: 创建一个无限循环,允许用户反复输入整数对进行交换,直到手动终止程序。 -
scanf('%d %d', &a, &b);: 从用户输入中读取两个整数,分别存储到变量a和b中。 -
a = a ^ b;: 将a和b的值进行异或运算,并将结果存储回a。 -
b = a ^ b;: 将当前a的值(包含了a和b的初始值的异或结果)与b进行异或运算,并将结果存储回b。 -
a = a ^ b;: 将当前a的值与b进行异或运算,并将结果存储回a。 -
printf('%d %d\n', a, b);: 打印交换后的a和b的值。
异或运算交换原理:
异或运算符(^)具有以下特性:
- 任何数与自身异或结果为0: a ^ a = 0
- 任何数与0异或结果为自身: a ^ 0 = a
- 异或运算满足交换律和结合律: (a ^ b) ^ c = a ^ (b ^ c)
利用这些特性,通过三次异或运算,可以实现两个变量的值交换。
注意事项:
- 此代码使用无限循环,需要手动终止程序运行。
- 在实际应用中,应根据需要修改循环条件或添加退出机制。
原文地址: https://www.cveoy.top/t/topic/Ja2 著作权归作者所有。请勿转载和采集!