代码:
foo()
{
}
int main()
{
int a=20;
a = foo(20);
printf("\n\n\t A : %d",a); // will print zero.
}
问题:
您可能会注意到foo()没有返回类型。它是 被认为是'int',为什么?为什么这个'隐含的int'规则?为什么 C的设计师非常喜欢'int'?
foo()没有参数声明,它说它可以接受 可变数量的参数。那么传递的参数在哪里? 例如foo(20)20去了哪里?
在上面的示例中,printf打印为零,为什么?
现在,考虑一下:
foo()
{
}
int main()
{
int a=20;
a = foo(a);
printf("\n\n\t A : %d",a); // It'll print 20.
}
答案 0 :(得分:2)
根据我的理解,这是原始C规范中的历史事物。如果您没有声明返回类型,那么它仍然在规范中,那么它是int
。这并不意味着你应该利用它。这是我书中不好的风格。
请阅读:Is it better to use C void arguments "void foo(void)" or not "void foo()"?
您所观察到的是未定义的行为,这是您对不返回任何内容的函数使用返回值时所获得的行为。