黑马程序员技术交流社区

标题: 定义域的问题 [打印本页]

作者: WANGJIAO    时间: 2014-10-15 18:44
标题: 定义域的问题
这个输出值是50,100,OK,我懂。

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


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

作者: 颜语非凡    时间: 2014-10-15 19:24
本帖最后由 颜语非凡 于 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

说的有点乱  能懂不?

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2