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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WANGJIAO 中级黑马   /  2014-10-15 18:44  /  1311 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个输出值是50,100,OK,我懂。

为什么加了个int 定义score中间黄线部分就相当于没有了,输出值变成200,100?


如果这样写呢?输出值和第二个一样吗?求教ING……

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 颜语非凡 于 2014-10-15 19:29 编辑

先说你的第一个问题第一个图上的  中间的参数 由于你没有重新定义  所以用的是 score=200的 这个参数, 所以你把score由200改成了50  所以输出的是  50   100
但是第二个图上   你在黄色部分重新的定义了  score  这个参数  所以你写的   score=50  是改的你新定义的这个参数  而不是 score=200的这个参数   所以输出不变 还是  200 100
至于第三个图  结果还是  200 100      因为你第三个score是重新定义的   而你输出的是  score=200的 这个值  所以跟里面的score没有关系  还是输出200

说的有点乱  能懂不?
回复 使用道具 举报
加了int之后,黄色部分的score变量的作用域就变小了,
回复 使用道具 举报
调用printf时,离它最近的那个分数的作用域已经结束,(也就是说走到打印分数这步时,它已经不存在了)这时离printf最近的分数值是那个200的,
打印第二个printf时那个200的作用域又结束了,离第二个printf最近的是那个100的
回复 使用道具 举报
颜语非凡 发表于 2014-10-15 19:24
先说你的第一个问题第一个图上的  中间的参数 由于你没有重新定义  所以用的是 score=200的 这个参数, 所 ...

谢谢~说得很好!:hug:
回复 使用道具 举报
x65396731 发表于 2014-10-16 09:00
调用printf时,离它最近的那个分数的作用域已经结束,(也就是说走到打印分数这步时,它已经不存在了)这时 ...

谢谢~说得很对,可是我不明白的是加不加int的区别,现在已经在大家的帮助下似懂非懂了~结合老师的视频和大家的说法,第一个图之所以输出结果是50而不是200,是因为int score = 200这里的score的作用域包括了{score = 50}这个代码块因此此时变量score被重新赋值50。而第二个图被重新赋值的是黄色部分的score变量,黄色部分已完成,相当于不存在,因此输出时只能找到200那个score。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马