A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

a,b,值为什么不变

8cf6fc246b600c3377408f8c1f4c510fd8f9a1cb.jpg (95.94 KB, 下载次数: 56)

8cf6fc246b600c3377408f8c1f4c510fd8f9a1cb.jpg

11 个回复

倒序浏览
因为没有临时变量。。。。修改代码:int temp=0; temp=a; a=b;b=temp;

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
CoeusLYJ 发表于 2015-5-5 12:42
因为没有临时变量。。。。修改代码:int temp=0; temp=a; a=b;b=temp;

这个不是这个问题。
题目中的意思就是没有临时变量的情况。
如果不用临时变量,直接这样算,
int a=2,b=5;
b=a;
a=b;
这样算,结果应该是a=2,b=2;

题目中的意思应该这么理解:
swap(a,b)计算后的结果是0.
但是a和b 已经定义好了,只是作为参数传递给了swap方法,方法中的运算不会改变a和b原来的值。
所以a仍然是2,b仍然是5.swap方法返回的结果是0.

这题主要看清楚a和b是属于哪一块的。
     

回复 使用道具 举报
swap()方法有它的方法体,变量只在它的作用域中有效,出了作用域就无效了。在此题中,swap(2,5),2,5是作为传递参数传入swap方法中,一旦swap方法结束,swap就会弹栈,那么自然而然变量swap中的2,5也就消失了,但这不意味着int a=2,b=5会消失 ,它要消失的话,要等到main方法结束后才会消失 。
回复 使用道具 举报
是关于变量作用域的问题。
回复 使用道具 举报
:handshake学习了
回复 使用道具 举报
int是值传的,就是拷贝了一个int a ,int b到函数中,并没有改变原来的a b 值
回复 使用道具 举报
1017161726 发表于 2015-5-5 13:05
这个不是这个问题。
题目中的意思就是没有临时变量的情况。
如果不用临时变量,直接这样算,

学习了。谢谢
回复 使用道具 举报
CoeusLYJ 发表于 2015-5-5 13:12
swap()方法有它的方法体,变量只在它的作用域中有效,出了作用域就无效了。在此题中,swap(2,5),2,5是作为 ...

谢谢您的回复,懂了。。
回复 使用道具 举报
因为这道题有两个a和两个b。main方法中有一个a = 2,一个b= 5,还有一个c = 0;swap方法中也有一个a =2,b=5;swap()执行完成后,c = 0;然后取出mian方法中的a和b。这时候swap中的a,b已经不存在了。
回复 使用道具 举报
涉及到值传递问题,基本类型的值传递不影响原来a,b的值,引用类型会影响
回复 使用道具 举报
赞一个!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马