首页 > 试题广场 >

以下程序运行后的输出结果是()()()

[填空题]
以下程序运行后的输出结果是123
int w=2;
int fun(int x){
int y=1;
static int z=3;
y++;
z++;
return (x+y+z);
}
main( ){
int k;
int w=1;
for(k=0;k<3;k++)
printf(“%4d”,fun(w++));
}
虽然有全局变量,但是如果在函数中重新被赋值,则会被修改。而静态变量则不会被修改。 本题主要考验静态和全局变量的区别。最后一个我也不会😊
发表于 2017-05-05 16:50:57 回复(0)
1. 当局部变量和全局变量名称相同,如果未作外部变量声明,在代码块中局部变量起作用。显然,题目中的全局变量没什么用。。。
k=0,   w++=1,  w=2    x=1      y=2    z=4     结果:7
k=1,    w++=2,  w=3     x=2      y=2    z=5     结果:9
k=2,    w++=3,  w=4     x=3      y=2    z=6     结果:11
循环结束
2. 当使用extern声明为外部变量,需要用花括号使声明和引用位于同一个代码块,此时全局变量才起作用。

发表于 2017-06-28 22:07:06 回复(0)
静态局部变量具有局部作用域。它只被初始化一次,
自从第一次初始化直到程序结束都一直存在,他和
全局变量的区别在于全局变量对所有的函数都是
可见的,而静态局部变量只对定义自己的函数体
始终可见。
静态变量并不是说其就不能改变值,不能改变值的量叫常量。
其拥有的值是可变的 ,而且它会保持最新的值。说其静态,
是因为它不会随着函数的调用和退出而发生变化。即上次
调用函数的时候,如果我们给静态变量赋予某个值的话,
下次函数调用时,这个值保持不变。
函数体内如果在定义静态变量的同时进行了初始化,则以后程序
不再进行初始化操作(出现在函数内部的基本类型的的静态变量
初始化语句只有在第一次调用才执行)。而对自动变量赋初值是
在函数调用时进行,每调用一次函数重新给一次初值,相当于
执行一次赋值语句。
编辑于 2017-07-03 21:45:00 回复(0)
w是全局变量,但是在main函数中被相应的局部变量替换,取局部变量的值。w++,w自增,但是式子返回的是自增之前的值,也就是说第一次循环fun函数的输入参数值为1。静态变量只初始化一次,每次调用都会保留上一次的值。
发表于 2017-05-11 08:53:54 回复(0)