面试记录00:在C语言中不使用任何中间变量如何将a、b的值进行交换(三种方法)——来自一小萌新工程师的复习


今天面试嵌入式,突然遇到这么一道题目,虽然简单,但鉴于我答得不是很好,所以还是分析一下为好。

第一种方法:

通过加减法。

 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 }

运行结果:

在做这道题的时候,由于思考进入了误区,所以写到后面都不知道自己在写什么。。。

唉。。。还是要多多修炼内功。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM