C中有返回值的声明错误

时间:2019-03-03 18:49:30

标签: c memory memory-leaks return declaration

在C语言中,这种声明是否有误?

short foo()
{
   short x,y,z;
   y=24;
   z = x + y;
   return z; 
}

2 个答案:

答案 0 :(得分:2)

声明本身不是错误的 ,但是代码存在问题:

  • 在现代C语言中,short foo(void)short foo()更为可取。前者说该函数不带参数。后者使它具有灵活性,其中涉及许多可能导致错误发生的问题。
  • z = x + y;中,未给x赋值。然后,代码的行为是不确定的。 (这是由于一条特殊的规则,即使用具有自动存储持续时间的对象,该对象既未赋值也未获取其地址,则其行为未由C标准定义。)

答案 1 :(得分:0)

z的返回值将是未定义的行为,因为您没有在此函数中初始化x变量的值。该函数的返回值将不一致,有时将是24,有时将是另一个值。