我定义了一个这样的函数
static void
flatten_tree(...)
{
static int num = 0;
...
}
但是,当函数执行时,num
会得到一些随机值,而不是第一次运行时的 0。在随后的函数调用中,它的行为与 static var 应该做的一样。静态变量不是显式初始化为零吗?初始化它的正确方法是什么?
最佳答案
如果它在第一次调用时没有设置为零,那么要么你的 C 实现被破坏,你的调试器被破坏,或者你犯了一些其他错误 - 我不会评论哪一种是最有可能的情况:- )
如果您真的想看看它在做什么,请将您的代码暂时更改为:
static void
flatten_tree(...)
{
static int num = 0;
printf( "XYZZY DEBUG: initial num is %d\n", num);
exit(1);
...
}
关于c - 使用错误值初始化的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637912/