1

代码 :

foo()
{
}
int main()
{
   int a=20;
   a = foo(20);
   printf("\n\n\t A : %d",a); // will print zero.
}

问题 :

  1. 您可能会注意到 foo() 没有返回类型。它被认为是'int',为什么?为什么这个“隐式 int”规则?为什么 C 的设计者如此喜欢'int'?

  2. foo() 没有参数声明,它表示它可以接受可变数量的参数。那么传递的参数到哪里去了?例如 foo(20) 20 去哪儿了?

  3. 在上面的例子中 printf 打印为零,为什么?


现在,考虑:

foo()
{
}
int main()
{
   int a=20;
   a = foo(a);
   printf("\n\n\t A : %d",a); // It'll print 20. 
}
  • 现在 printf 打印 20 为什么不像之前那样打印 0 ?
4

1 回答 1

2
  1. 据我了解,这是原始 C 规范中的历史事件。它仍然在规范中,如果你不声明返回类型,那么它就是int. 这并不意味着你应该利用它。在我的书中,这种风格很糟糕。

  2. 阅读本文:使用 C void 参数“void foo(void)”还是不使用“void foo()”更好?

  3. 您正在观察的是未定义的行为,这是您将返回值用于不返回任何内容的函数时所得到的。

于 2013-03-10T20:55:25.003 回答