首页 > 试题广场 >

下面程序输出结果为( ) #inc...

[单选题]
下面程序输出为()
#include <stdio.h>
int fun(int a) { 
    int b = 0;     
    static int c = 3;
    b++; 
    c++; 
    return (a + b + c);
}

int main() {
    int i=0;
    for(; i < 3; i++) 
        printf("%d",fun(2));
    return 0; 
}
  • 777
  • 789
  • 7911
  • 71320
含有静态变量c不会被释放,a,b都是临时变量,所以只需要找到最开始的和为7,每次只有c加1,所以依次为789
发表于 2019-09-20 17:43:07 回复(1)
静态变量不会随着函数运行结束而结束,初始值只赋一次,后面再次调用的时候是在上次的值上做相应改变,而不会再赋一次初值,而局部变量则不一样,函数运行完了就被释放了,再次调用就需要再次赋初值。
发表于 2021-03-18 17:35:52 回复(0)




发表于 2019-09-19 20:50:27 回复(0)
2+1+4=7
2+1+5=8
2+1+6=9
编辑于 2019-09-19 22:58:58 回复(7)
静态局部变量是在编译时赋初值的,且只赋值一次。以后再次调用时保持上次的值。
发表于 2021-03-11 13:07:26 回复(0)
局部静态变量也是静态变量
发表于 2022-01-06 16:02:27 回复(0)
对static变量的理解

发表于 2021-05-22 17:36:37 回复(0)
1111111111111
发表于 2022-09-07 15:39:16 回复(0)
a为啥是2呢?
发表于 2022-08-10 21:47:45 回复(0)
含有静态变量的c不会被释放,自增,a,b都是临时变量,不变。
编辑于 2022-02-18 15:30:04 回复(0)