shenmuzic 发表于 2015-5-4 10:26:59

请问,下面的程序中int fun(void)中count这个数是在变吗?为啥还说此赋值语句没....

旧帖重发:cry

#include <stdio.h>

int fun(void)
{
      static int count = 10; //事实上此赋值语句从来没有执行过
      return count--;
}
int count = 1;

int main(void)
{
      printf("global\t\tlocal static\n");
      for(; count <= 10; ++count)
      printf("%d\t\t%d\n", count, fun());
      return 0;
}

程序的运行结果是:
global local static
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1

凌风破浪 发表于 2015-5-4 11:07:43

结果很明显变了啊,有什么问题啊

shenmuzic 发表于 2015-5-4 11:16:44

凌风破浪 发表于 2015-5-4 11:07
结果很明显变了啊,有什么问题啊

int fun()里的count不是变了吗?那上面为啥说 此赋值语句从来没有执行过:handshake

凌风破浪 发表于 2015-5-4 11:20:24

实际上是执行了,只不过不是在 fun函数中执行的,程序加载的时候就执行好了

shenmuzic 发表于 2015-5-4 11:27:53

哦 谢了:lol:

仰望天上的光 发表于 2015-5-4 18:13:24

static int count = 10; //事实上此赋值语句从来没有执行过
这个不叫赋值语句,这个叫做初始化。
一个变量定义的时候对它进行“赋值”叫做“初始化”
页: [1]
查看完整版本: 请问,下面的程序中int fun(void)中count这个数是在变吗?为啥还说此赋值语句没....