静态变量用错误的值初始化

时间:2013-12-17 15:20:45

标签: c static

我已经定义了这样的函数

static void
flatten_tree(...)
{
  static int num = 0;
  ...
}

但是,执行该函数时,num会获得一些随机值,而不是第一次运行时的0。在后续函数调用时,它的行为应该是静态var应该做的。是不是用零显式初始化静态变量?初始化它的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果它第一次调用时没有设置为零,那么你的C实现被破坏,你的调试器被破坏,或者你已经犯了一些其他的错误 - 我不会评论最可能出现的情况: - )

如果真的希望了解它正在做什么,请暂时将代码更改为:

static void
flatten_tree(...)
{
  static int num = 0;
  printf( "XYZZY DEBUG: initial num is %d\n", num);
  exit(1);

  ...
}