gpt4 book ai didi

c - 为什么我可以用 'static' 限定符声明一个没有类型的变量? (在 C 中)

转载 作者:太空狗 更新时间:2023-10-29 15:28:08 24 4
gpt4 key购买 nike

在研究C 中的static 限定符时,我错误地编写了以下代码。我认为 getEven() 函数不会被编译,但它运行良好。为什么我可以声明一个没有类型的变量?

我尝试了一些测试,发现没有类型的static变量的类型是4字节整数。

//This code works well.
int getEven(int i) {
static int counter = 0;
if (i%2==0) {
counter++;
}
return counter;
}

//I thought this code would make compile error, but it also works well.
int getEven_(int i) {
static counter = 0; //No type!
if (i % 2 == 0) {
counter++;
}
return counter;
}

最佳答案

没有显式类型名称声明的变量被假定为 int 类型。该规则在 c99 标准中被撤销。

如果您的变量类型是 char 或 float,则这段代码将不起作用。

这与您可以使用 unsigned 而不是 unsigned intshort 而不是 short int 的原因相同> 和 static 而不是 static int。最好使用 int 显式限定变量。

关于c - 为什么我可以用 'static' 限定符声明一个没有类型的变量? (在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com