c - 为什么局部变量没有默认类型而全局变量在 C 中有?

标签 c

据我所知,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/

相关文章:

c - 使用 waitpid 选项等待所有子进程 __WALL

c - C 结构体成员的默认值

c - 在 C 中计算模数的最优化方法

c - C中的双指针疑惑

c - 使用C语言调用HTTP Web Service

C: Segmentation Fault -- 堆栈实现链表

c++ - 创建这样的控件

C语言——统计不同元音的个数,无指针,无附加函数

c - pthreads并行化错误结果

c - 如何在不使用 c 中的 free() 的情况下释放内存