为什么value都是0?

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:50:31
c++初手,在网上看到这段代码:
#include <iostream.h>
void fun(int i)
{
static int value=i++;
cout<<value;
}

int main()
{
fun(0);
fun(1);
fun(2);
return 0;
}
为什么每次打印出来的value都是0?

因为 value 是静态类型(static),只会定义一次。也就是说不管你调用 fun 这个函数多少次,static int value = i++ 这个定义语句只会在第一次调用的时候执行,由于你第一次执行的时候 i = 0,所以 value 也就被初始化成 0 了,以后调用 fun 都不会再执行这条语句的。

你可以把 value = i++ 单独拿出来,让他每次都执行:

void fun(int i) {
static int value;
value = i++;
cout << value;
}

或者不要把 i 定义成静态变量:

void fun(int i)
{
int value=i++;
cout<<value;
}

你好因为static 修饰的变量值是不能改变的
希望能理解

你搞明白STATIC就知道为什么了。