例题1.给出两个整型变量,将两个值的内容进行互换;
**#include<stdio.h>
int main()
{
int a=0;
int b=0;
int temp=0; // temp 临时变量
printf("Please enter two numbers:");
scanf("%d %d",&a,&b);
printf("a=%d, b=%d",a,b);
a=temp; // 将a 赋值给temp 临时变量
b=a; //a 空了之后将b赋给 a
temp=b; //b 空了之后将 temp游赋值给b
return 0;
} // 创建临时变量,成功交换;
例题2. 在不建立临时变量的情况下,将交换两个数的内容;
第一种解法;看代码:
#include<stdio.h>
int main()
{
int a;
int b;
printf("Please enter two numbers :");
scanf("%d,%d", &a,&b);
a=a+b;
b=a-b; //a被赋值给a+b;a+b-b=a;
a=a-b; // a b 成功互换
printf("a=%d,b=%d", a,b);
return 0
}
第二种解法;看代码:
#include<stdio.h>
int main()
{
int a=0;
int b=0;
printf(“Please enter two numbers:");
scanf("%d,%d",&a,&b);
a=a^b; // ^ 异或操作符
b=a^b;
a=a^b;
printf("a=%d,b=%d",a,b);
return 0;
}
操作符的分类有;
①.算术操作符
②.移位操作符
③.位操作符
④.赋值操作符
⑤.单目操作符
⑥.关系操作符
⑦.逻辑操作符
⑧.条件操作符
⑨.逗号表达法
下标引用、函数调用、结构成员;
异或操作符属于位操作符;
& : 按位与
|: 按位或
^: 按位或(异或)
引用上述的代码我们来仔细的分析下:
a=a^b; // ^ 异或操作符
b=a^b;
a=a^b;
异或的操作属于在二进制数值上的操作:
人们经常使用的是十六进制,但计算机主要都是由开关元件构成,故只能识别0和1构成的二进制代码;
二进制数:0000 十进制: 0;
0001 1;
0010 2;
0011 3;
假如现在a=1;
b=2; 在二进制上的操作对应的就是0001 与 0010之间的操作;
a= a^b=0001 ^0010= 1100 (相同取1不同的取零)
a=1100;
b=a^b; 1100 ^ 0010=0001
a=a ^ b; 1100 ^0001= 0010 // 成功互换;
很多人可能对进制比较感兴趣,那么下篇文章我会更新关于有关进制互换的问题;