C语言 这题不会写,我觉得是777答案是789?
3个回答
2020-03-20
展开全部
1、关键在static修饰的int c;
普通局部变量存储于进程栈空间,使用完毕会立即释放。
而静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。
且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
因此,c的值是一直在++的。故答案是789
普通局部变量存储于进程栈空间,使用完毕会立即释放。
而静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。
且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
因此,c的值是一直在++的。故答案是789
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一、变量声明后会被编译器识别并编译,但static修饰的变量只编译一次;
二、static变量生存期为程序运行开始到结束;
第一次看int f(int a),语句static int c = 3时第一次被识别到,所以int c = 3需要编译,于是c被赋值为3,然后c自增变成了4;
第二次看int f(int a),语句static int c = 3不是第一次被识别,所以int c = 3不会再被编译,于是c没有被重新赋值为3,保留了上一次的操作结果:4,然后c做自增操作变成了5;
第三次,同理,c变成了6;
二、static变量生存期为程序运行开始到结束;
第一次看int f(int a),语句static int c = 3时第一次被识别到,所以int c = 3需要编译,于是c被赋值为3,然后c自增变成了4;
第二次看int f(int a),语句static int c = 3不是第一次被识别,所以int c = 3不会再被编译,于是c没有被重新赋值为3,保留了上一次的操作结果:4,然后c做自增操作变成了5;
第三次,同理,c变成了6;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7 8 9,static int c这个东西你可以看作全局变量,第二次调用不会重置为3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询