[英]Where does the argument go when passed to a function having no declaration for parameters
代码 :
foo()
{
}
int main()
{
int a=20;
a = foo(20);
printf("\n\n\t A : %d",a); // will print zero.
}
问题 :
您可能会注意到 foo() 没有返回类型。 它被认为是“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.
}
据我所知,这是原始 C 规范中的历史事件。 如果您没有说明返回类型,那么它仍然在规范中是int
。 这并不意味着你应该利用它。 在我的书中那是糟糕的风格。
您观察到的是未定义的行为,这是当您使用不返回任何内容的函数的返回值时得到的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.