据我所知,C 中的全局变量默认为 int 类型。我只是想知道为什么局部(自动)变量没有默认类型以及下面的代码导致编译错误的原因
int main(int argc, char *argv[])
{
x;
return x;
}
虽然这不是?
x;
int main(int argc, char *argv[])
{
return x;
}
最佳答案
隐式 int
的规则自 c99 以来不再被允许。
然而,对于局部变量(您的第一个示例),即使这样也不允许作为声明:
x; /* or even x = 42; */
因为它是模棱两可的。这是计算 x
的表达式语句还是 x
的声明?在文件范围内不允许声明,因此没有歧义,它只能是 int
的声明。
关于c - 为什么局部变量没有默认类型而全局变量在 C 中有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829974/