我正在写一些C代码,并注意到我认为是一个错误,但事实并非如此。我有以下类型声明声明。
const fee;
然而,它最初没有被删除,因为编译器和我没有抓住它。所以我很好奇为什么C允许这个以及什么是默认类型。
答案 0 :(得分:14)
只有原始版本的C语言标准(ANSI / ISO C89 / 90)才允许这样做。此类变量声明默认根据“隐式int
”规则键入int
。从一开始,这条规则就存在于C中。这就是语言最初定义的方式。
请注意,声明的声明说明符部分不能完全省略,例如仅仅
fee;
未声明int
变量。即使在原始C中它也是非法的。但是一旦你添加了某种声明说明符或限定符,声明就变得合法了,默认为int
类型,如
static fee;
const fee;
register fee;
但是,所有这些在C99和更高版本的语言中都是非法的,因为这些版本的语言规范禁止使用“implicit int”。