面试记录00:在C语言中不使用任何中间变量如何将a、b的值进行交换(三种方法)——来自一小萌新工程师的复习
Posted on 2019-03-20 19:45 ErgoCogito 阅读(2533) 评论(0) 编辑 收藏 举报今天面试嵌入式,突然遇到这么一道题目,虽然简单,但鉴于我答得不是很好,所以还是分析一下为好。
第一种方法:
通过加减法。
1 #include"stdio.h" 2 int main(void) 3 { 4 int a=6,b=8; 5 a=a+b; 6 b=a-b; 7 a=a-b; 8 printf("a=%d\nb=%d\n",a,b); 9 return 0; 10 }
运行结果:
第二种方法:
乘除法。
1 #include"stdio.h" 2 int main(void) 3 { 4 int a=16,b=68; 5 a=a*b; 6 b=a/b; 7 a=a/b; 8 printf("a=%d\nb=%d",a,b); 9 return 0; 10 }
运行结果:
第三种:
通过位运算符异或来实现。
1 #include"stdio.h" 2 int main(void) 3 { 4 int a=86,b=68; 5 a=a^b; 6 b=a^b; 7 a=a^b; 8 printf("a=%d\nb=%d",a,b); 9 return 0; 10 }
运行结果:
在做这道题的时候,由于思考进入了误区,所以写到后面都不知道自己在写什么。。。
唉。。。还是要多多修炼内功。