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”。