我有两个问题。我会把它们分开放,但第一个真的很小。
问题1)如果未指定函数的返回类型,则默认为int?
问题2)以下函数在编译时会出现什么错误?
f( int a, int b )
{
int a;
a = 20;
return a;
}
选项包括:
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
据我所知,答案应该是2)和3)。
但它只给出答案2)。为什么会这样?
感谢:。)
答案 0 :(得分:5)
问题1)如果未指定函数的返回类型,则默认为int吗?
是的,c89就是这种情况。但是c99和c11不再支持此功能。这解释了为什么现在在C中你必须使用int f(int a, int b)
。
C委员会在C99理由文件中解释(强调我的):
" C99的一个新特性:在C89中,声明中的声明说明符可以省略所有类型说明符。在这种情况下,暗示了int。委员会认为,此功能的固有危险性超过了它的便利性,因此被删除。其结果是保证生成诊断,以便捕获其他类别的编程错误。"
答案 1 :(得分:0)
我的回答: 对于第一个问题:不,它不是真的。在C语言中,您必须指定返回类型。如果您不需要返回任何内容,请将其指定为:void。 对于第二个问题:第二选择2.是真的。