C const的默认类型是什么?

我正在写一些C代码,并注意到我认为是一个错误,但事实并非如此。 我有以下类型声明声明。

const fee; 

然而,它最初没有被删除,因为编译器和我没有抓住它。 所以我很好奇为什么C允许这个以及什么是默认类型。

只有原始版本的C语言标准(ANSI / ISO C89 / 90)才允许这样做。 此类变量声明默认根据“隐式int ”规则键入int 。 该规则从一开始就存在于C中。 这就是语言最初定义的方式。

请注意, 声明的声明说明符部分不能完全省略,例如仅仅

 fee; 

不声明int变量。 即使在原始C中它也是非法的。但是一旦你添加了某种声明说明符或限定符,声明就变得合法并且默认为int类型,如

 static fee; const fee; register fee; 

但是,所有这些在C99和更高版本的语言中都是非法的,因为这些版本的语言规范禁止使用“implicit int”。