您的位置首页百科问答

stat来自ic int a=2;

stat来自ic 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); } 程序运行结果是为什么谢谢

stat来自ic int a=2;

14!

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

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

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,值为1,所以k的值变成了14!

O伟庆斤部标绿kay?