我有两个问题.我会把它们分开放,但第一个真的很小.
问题1)如果未指定函数的返回类型,则默认为int吗?
问题2)以下函数在编译时会出现什么错误?
f( int a, int b )
{
int a;
a = 20;
return a;
}
Run Code Online (Sandbox Code Playgroud)
选项是:
1.) Missing parentheses in return statement.
2.) The function should be defined as int f( int a, int b )
3.) Redeclaration of a
4.) None of the above
Run Code Online (Sandbox Code Playgroud)
据我所知,答案应该是2)和3).
但它只给出答案2).为什么会这样?
谢谢.:)
问题1)如果未指定函数的返回类型,则默认为int吗?
是的,这是c89的情况.但是c99和c11不再支持此功能.这解释了为什么现在你必须使用C语言int f(int a, int b).
C委员会在C99理由文件中解释(强调我的):
"C99的一个新特性:在C89中,声明中的声明说明符可以省略所有类型说明符.在这种情况下暗示了int.委员会认为这个特性的固有危险性超过了它的便利性,所以它是去除,效果是保证生产的诊断的,将捕获编程错误的一个类别."