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

不使用第三个变量,交换两个整型的变量内容.其实只是为了启发一种不要被教科书上"定义中间变量来交换两个变量"的僵化思维.... 不使用第三个变量,交换两个整型的变量内容.
其实只是为了启发一种不要被教科书上"定义中间变量来交换两个变量"的僵化思维.
展开
 我来答
别动队领导
2009-04-18 · TA获得超过399个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:294万
展开全部
二楼的做法虽然高明,但当数据过大时可能会溢出.
Auto_eth0的第一种做法,即按位取异或的方法,才是最好的。
第一次取异或,ab相同的位变为0,不同的变为1,并存入a中。b再与其取异或时,如果此时a的某一位为1,则表示原来的a,这一位和b不同,和现在的a取异或后b在该位的值正好变的与原来相反;如果a的某位为0,则表示原来的a,这一位和b相同,和现在的a取异或后b在该位的值正好不变。
这样做不仅能交换整形变量,其他任何形式的变量都能交换,厉害!!!
茁耘稳b
2009-04-18 · 超过17用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
x ^= y ; y ^= x ; x ^= y 只有这种比较好
他出这种题就是考我们对问题的了解
如果用 x= x+y ; y = x-y ; x = x-y ;
会出现溢出问题 当x,y都比较大或小时 2个+或者-就会溢出 所以这种题就是看你的对题意的了解以及考虑问题的全面性,只有x ^= y ; y ^= x ; x ^= y才是可行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Auto_eth0
2009-04-18 · 超过18用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:0
展开全部
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 ;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2009-04-18 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65782
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
华为真的无耻(或者变态)到这个地步吗,真不可思议,会这个就代表很高的技术吗,真是可笑。

int a,b;
a=a+b;
b=a-b;
a=a-b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e1b9539c0c
2009-04-18 · TA获得超过734个赞
知道大有可为答主
回答量:2241
采纳率:33%
帮助的人:722万
展开全部
x ^= y ; y ^= x ; x ^= y ;
很好!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式