c - 静态变量未被初始化

标签 c static

我正在使用 Yagarto GCC 编译器,但在使用局部静态变量时发现问题。它们在声明时都被我初始化为零。但是在调试执行时,我发现它们没有被初始化:

例子:

void hello( void ){
    static int number_hellos = 0;

    number_hellos++;

    printf("%d\n", number_hellos);

}

当调试器到达number_hellos++时,我发现它的初始值不是0。为什么?是否应该启用任何编译器或链接器标志?

最佳答案

这个静态初始化:

static int number_hellos = 0;

只发生一次。实际上在编译时。不是在进入函数的时候。

关于c - 静态变量未被初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442168/

相关文章:

c# - 静态类或对象

创建一个以 null 结尾的字符串数组,其中大多数字符串数组是静态的

C - 掷骰子模拟器

java - 如何将 C++ double 从一个系统发送到另一个发件人 : Winsock Receiver: Java

java - 如何仅在至少创建了一个实例时才初始化静态变量

python - Django CSS背景图片不会改变

c - 相同类型,全部定义,类型冲突

c - C中的 "++="是什么?

http - 第二个FileServer提供html但不提供图像

function - Swift 类中的静态与类函数/变量?