首页 > 试题广场 >

设 x 和 y 均为 int 型变量,则以下语句:x+=y;

[单选题]
设 x 和 y 均为 int 型变量,在不考虑数据溢出的情况下,则以下语句:
x += y;
y = x - y;
x -= y;
的功能是?
  • 把x和y按从大到小排列
  • 把x和y按从小到大排列
  • 无确定结果
  • 交换x和y中的值
这个就是不需要重新申请空间的交换两个数字的方法
发表于 2016-10-04 11:50:21 回复(0)
更多回答
如果x+=y溢出了呢???应该是c吧
发表于 2017-05-03 11:13:12 回复(1)
这个常见于将斐波那契数列的递归算法转换为迭代形式。
发表于 2017-03-09 21:09:59 回复(0)
把原先的赋值写成下面的形式:
xt = x + y
yt = xt - y
xt = xt - yt
然后化简就可以了:
yt = (x + y) - y = x
xt = (x + y) - (x + y - y) = y
同理还有用异或交换的方式:
x ^= y;
y ^= x;
x ^= y;

发表于 2016-09-06 15:43:52 回复(2)
x = x + y;//此时x = x + y
y = x - y;//此时y = (x + y ) - y = x
x = x - y;//此时x = (x + y ) - (x) = y
/*所以这段代码交换了两者的位置,这种方法和使用中间变量本质是一样的。
*/
int temp, x, y, temp2;
temp = x + y;
temp2 = temp -y;//y = x
x = temp - temp2;// x = y
另外,交换两变量也可以用异或交换。C语言和C++语言的异或不用XOR、xor、⊕,而是用“^”,键入方式为Shift+6。(而其它语言的“^”一般表示乘方,那C语言的乘方怎么表示呢?
函数申明: double pow(double x, double y) 
函数用途: 计算以x为底数的y次幂  
头 文 件: math.h 
输入参数: x:底数;y:幂数    
返 回 值: 计算结果 
异或交换举例:
a=a^b;
b=b^a;
a=a^b;
/*
a1=a^b
b=b^a1=b^a^b=a
//此时a1=a^b
a=a1^b=a^b^a=b
//这种方法虽然看起来很NB,但是不推荐这么用,了解就行。这种代码易读性不强,可能只会存在于面试笔试中,个人感觉不会大量使用。
谢谢各位

发表于 2016-11-27 20:59:43 回复(0)
简单直观的做法:代入具体的数试一下!
发表于 2016-09-17 21:23:31 回复(0)
x = x + y;//此时x = x + y y = x - y;//此时y = (x + y ) - y = x x = x - y;//此时x = (x + y ) - (x) = y /*所以这段代码交换了两者的位置,这种方法和使用中间变量本质是一样的。 */ int temp, x, y, temp2; temp = x + y; temp2 = temp -y;//y = x x = temp - temp2;// x = y a=a^b; b=b^a; a=a^b; /* a1=a^b b=b^a1=b^a^b=a //此时a1=a^b a=a1^b=a^b^a=b //这种方法虽然看起来很NB,但是不推荐这么用,了解就行。这种代码易读性不强,可能只会存在于面试笔试中,个人感觉不会大量使用。 谢谢各位
编辑于 2022-11-27 20:50:19 回复(0)
不使用第三方变量交换两个变量的值,两种常用方法:加法,位运算符^
a = a^b;
b = b^a;
a = a^b;
发表于 2020-09-29 11:13:01 回复(0)
x+=y 这句话会溢出吗?求解答
发表于 2017-04-17 16:09:52 回复(1)
D
发表于 2016-08-28 01:04:27 回复(0)
分别对x、y赋值计算即可得出是交换x和y中的值
发表于 2016-08-18 16:12:19 回复(0)