如果我在这段代码中有一个全局静态变量 x
#include <stdio.h>
#include <stdio.h>
static int x;
int main(void)
{
DO SOMETHING WITH x HERE
x++;
}
如果我选择先将 x 初始化为一个值会有什么不同
static int x = 0;
在输入“main”之前?
在我没有为 x 赋值的第一个例子中,编译器是否隐含地知道 x 将被设置为零,因为它是一个静态变量?我听说我们可以用静态变量来做到这一点。
非常感谢...
最佳答案
具有显式初始化的静态变量始终初始化为零(或空指针,具体取决于类型)。 C标准§6.7.8/10对此有描述。但是明确地将它设置为 0 可以帮助其他人无需对相同的问题感到疑惑:)。
关于C静态变量和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617196/