首页 热点资讯 义务教育 高等教育 出国留学 考研考公

华为的一道面试题目(C/C++初学者进):

发布网友 发布时间:2022-04-23 01:20

我来回答

5个回答

热心网友 时间:2023-08-29 18:51

二楼的做法虽然高明,但当数据过大时可能会溢出.
Auto_eth0的第一种做法,即按位取异或的方法,才是最好的。
第一次取异或,ab相同的位变为0,不同的变为1,并存入a中。b再与其取异或时,如果此时a的某一位为1,则表示原来的a,这一位和b不同,和现在的a取异或后b在该位的值正好变的与原来相反;如果a的某位为0,则表示原来的a,这一位和b相同,和现在的a取异或后b在该位的值正好不变。
这样做不仅能交换整形变量,其他任何形式的变量都能交换,厉害!!!

热心网友 时间:2023-08-29 18:52

x ^= y ; y ^= x ; x ^= y 只有这种比较好
他出这种题就是考我们对问题的了解
如果用 x= x+y ; y = x-y ; x = x-y ;
会出现溢出问题 当x,y都比较大或小时 2个+或者-就会溢出 所以这种题就是看你的对题意的了解以及考虑问题的全面性,只有x ^= y ; y ^= x ; x ^= y才是可行的

热心网友 时间:2023-08-29 18:52

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 ;

热心网友 时间:2023-08-29 18:53

华为真的无耻(或者*)到这个地步吗,真不可思议,会这个就代表很高的技术吗,真是可笑。

int a,b;
a=a+b;
b=a-b;
a=a-b;

热心网友 时间:2023-08-29 18:53

x ^= y ; y ^= x ; x ^= y ;
很好!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com