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