c - 为什么未初始化的局部变量总是具有相同的初始值?

标签 c static local-variables

这段代码中,为什么我测试的结果总是123

#include <stdio.h>

void test() {
    int a;
    a++;

    printf("%d",a);
}

int main(int argc, char *argv[]) {
    test();
    test();
    test();
}

我认为 test() 中的变量是静态的,不是吗?为什么?

最佳答案

变量不是静态的。您正在访问一个未初始化的变量。行为未定义。

关于c - 为什么未初始化的局部变量总是具有相同的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14646490/

相关文章:

执行后关闭(管道[1])

c - 程序奇怪地返回到循环顶部

c++ - C/C++ static const 局部变量的用途

database - 如何将静态数据放入 Android 中的 SQLite 数据库?

c - 如何在函数体内引用与局部变量同名的全局变量?

c++ - 通过 3 int 查找值的有效方法

c++ - 为什么一个非常量静态成员会有多个定义?

ide - 调试时如何使 Locals IDE 窗口始终位于最前面?

java - java中final局部变量的使用

c - 为什么这个程序有不同的结果,temp=*a 和 *a= temp 不是同一件事吗?