【发布时间】:2014-10-04 05:26:06
【问题描述】:
我正在使用 orwell dev c++ IDE。我知道在旧的 C89 标准和准标准 C++ 支持 default to int 规则,当函数的返回类型未在函数定义中明确指定时。但它已在 C++ 中被禁止。但最近我写了一个简单的 C 程序,它工作正常。
#include <stdio.h>
void fun();
int main(void)
{
int a=9;
printf("%d",a);
printf("%d",a);
fun();
return 0;
}
a=1;
void fun()
{
printf("%d",a);
}
默认 int 规则是否也适用于变量?我的编译器向我显示以下警告。
[Warning] data definition has no type or storage class [enabled by default]
[Warning] type defaults to 'int' in declaration of 'a' [enabled by default]
为什么C99 标准仍然允许默认为int?它在 C++ 中编译失败。如果我错了,请纠正我?这个 C 程序也适用于 ideone.com 等在线编译器
【问题讨论】:
-
为什么 C99 标准仍然允许默认为 int? 我的猜测是,如果它没有,很多旧代码都会中断。
-
为什么要套用过去的规则?奴隶制,燃烧的女巫……无论如何,C++ 和 C 是两种不同的语言。只是碰巧在他们的名字中有 C 并且有共同的遗产
-
“默认 int 规则是否也适用于变量?”:是的,C90 的允许类型说明符列表(在 6.5.2 中)包含以下条目作为允许的选项之一(强调添加):“int,signed,signed int,或没有类型说明符”。 C99 删除了最后一位。