当前位置:大问百书>生活百科>static int a=2;

static int a=2;

2024-09-04 23:26:25 编辑:zane 浏览量:601

static int a=2;

的有关信息介绍如下:

问题补充说明:有以下程序 #include int a=1; int f(int c) {static int a=2; c=c+1; return (a++)+c;} main() { int i,k=0; for(i=0;i<2;i++){int a=3;k+=f(a);} k+=a; printf(“%d\n”,k); } 程序运行结果是为什么谢谢

static int a=2;

14!

考虑作用域及可见性的问题,以及++的用法

按照程序执行的顺序来分析

i=0时,定义了inta,a的作用域仅仅在inta=3;k+=f(a);语句中,执行完后a就被释放了。先做f(3),此时在f(3)的stack区中

c=c+1,执行完后c=4;

(a++)+c的值是2+4=6,此时全局变量a被局部变脸洋物为等没编区下达量a所覆盖,不可见,但是有作用域。然后a=3并且保存在data区中,直到程序结束后才释放

f返回时,返回的是6,则k=6

i=1时,做f(3),同上,c=来自4,注意此时局部静态变量a的值是3,因此(a++)+c的值是7,之后a自增成4

f返回时,返回的是7,那么k+=f(a)的结果就是6+7=13

i=2时,退出循环

k+=a;此处的a是全局变量a,值为360问答1,所以k的值变成了措齐在层14!

Okay?

版权声明:文章由 大问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.dawenbaishu.com/life/86247.html
热门文章