C++ 请解释一下图中程序如何运行出来的? 20

关于局部变量和静态局部变量和全局变量的变化,如何调用的函数以及初始化问题,尤其是结果的第二行和第四行那些数值怎么出来的?谢谢... 关于局部变量和静态局部变量和全局变量的变化,如何调用的函数以及初始化问题,尤其是结果的第二行和第四行那些数值怎么出来的? 谢谢 展开
 我来答
百度网友d571a2b
2016-12-18 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:21.4万
展开全部
n是全局变量 , 所以无论是在mian里面还是在func里面 , 对它的值进操作都是能正常记录下来的。

在main 和 func 里面分别定义了一个静态变量和一个局部变量
先来说main里面 , 因为作用于的问题 , 在main里面输出的变量首先会采用main这个作用于里面的变量,这个你应该是知道的
主要是说说func里面的输出语句 , 第一次的时候 , 你初始化的 a = 5 , b = 5 ,因为这两个变量是在func里面的 , 所以输出的话首先会选择他们 , 其次才会考虑main里面定义的 ,
第一次输出 a = a+2 = 4 , b = b+5 = 10
第二次输出的时候 , 因为a是静态变量 , 生命周期的原因 , a的值是4 , 而b在第一次调完func之后就应经不存在了 ,所以不得初始值还是 5
因此 a = a+2 = 4+2 = 6 , b = b +5 = 5+5 = 10
这个主要就是作用域的问题 , 理解了就很简单
追问
谢谢,请问可以帮忙解释一下函数的运行顺序么? 因为我只看到三个cout,为什么会出来四行结果呢? 以及我不太明白他是先运行main,然后显示第一个cout,再运行void func()显示最后一个cout,再回到main中调用func()?  谢谢啦
追答
你点用了两次func
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式