华为的一道面试题目(C/C++初学者进):
不使用第三个变量,交换两个整型的变量内容.其实只是为了启发一种不要被教科书上"定义中间变量来交换两个变量"的僵化思维....
不使用第三个变量,交换两个整型的变量内容.
其实只是为了启发一种不要被教科书上"定义中间变量来交换两个变量"的僵化思维. 展开
其实只是为了启发一种不要被教科书上"定义中间变量来交换两个变量"的僵化思维. 展开
9个回答
展开全部
二楼的做法虽然高明,但当数据过大时可能会溢出.
Auto_eth0的第一种做法,即按位取异或的方法,才是最好的。
第一次取异或,ab相同的位变为0,不同的变为1,并存入a中。b再与其取异或时,如果此时a的某一位为1,则表示原来的a,这一位和b不同,和现在的a取异或后b在该位的值正好变的与原来相反;如果a的某位为0,则表示原来的a,这一位和b相同,和现在的a取异或后b在该位的值正好不变。
这样做不仅能交换整形变量,其他任何形式的变量都能交换,厉害!!!
Auto_eth0的第一种做法,即按位取异或的方法,才是最好的。
第一次取异或,ab相同的位变为0,不同的变为1,并存入a中。b再与其取异或时,如果此时a的某一位为1,则表示原来的a,这一位和b不同,和现在的a取异或后b在该位的值正好变的与原来相反;如果a的某位为0,则表示原来的a,这一位和b相同,和现在的a取异或后b在该位的值正好不变。
这样做不仅能交换整形变量,其他任何形式的变量都能交换,厉害!!!
上海勤革
2024-10-18 广告
2024-10-18 广告
这里小编推荐一款新的IT在线编程与面试题库平台:“超级码客”,超级码客是聚焦于各级别软件开发工程师,运维,测试等技术人员,更加侧重于实战面试考题与在线测试,提供海量面试题八股理论分析,辅助机考笔试,可以说是更加适合于面试求职路上的所有IT技...
点击进入详情页
本回答由上海勤革提供
展开全部
x ^= y ; y ^= x ; x ^= y 只有这种比较好
他出这种题就是考我们对问题的了解
如果用 x= x+y ; y = x-y ; x = x-y ;
会出现溢出问题 当x,y都比较大或小时 2个+或者-就会溢出 所以这种题就是看你的对题意的了解以及考虑问题的全面性,只有x ^= y ; y ^= x ; x ^= y才是可行的
他出这种题就是考我们对问题的了解
如果用 x= x+y ; y = x-y ; x = x-y ;
会出现溢出问题 当x,y都比较大或小时 2个+或者-就会溢出 所以这种题就是看你的对题意的了解以及考虑问题的全面性,只有x ^= y ; y ^= x ; x ^= y才是可行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.x ^= y ; y ^= x ; x ^= y ;
2.x = x+y ; y = x-y ; x = x-y ;
3.x = x-y ; y = y+x ; x = y-x ;
4.x = y-x ; x = y-x ; x = x+y ;
2.x = x+y ; y = x-y ; x = x-y ;
3.x = x-y ; y = y+x ; x = y-x ;
4.x = y-x ; x = y-x ; x = x+y ;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
华为真的无耻(或者变态)到这个地步吗,真不可思议,会这个就代表很高的技术吗,真是可笑。
int a,b;
a=a+b;
b=a-b;
a=a-b;
int a,b;
a=a+b;
b=a-b;
a=a-b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x ^= y ; y ^= x ; x ^= y ;
很好!
很好!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询