在C语言中,这种声明是否有误?
short foo()
{
short x,y,z;
y=24;
z = x + y;
return z;
}
答案 0 :(得分:2)
声明本身不是错误的 ,但是代码存在问题:
short foo(void)
比short foo()
更为可取。前者说该函数不带参数。后者使它具有灵活性,其中涉及许多可能导致错误发生的问题。z = x + y;
中,未给x
赋值。然后,代码的行为是不确定的。 (这是由于一条特殊的规则,即使用具有自动存储持续时间的对象,该对象既未赋值也未获取其地址,则其行为未由C标准定义。)答案 1 :(得分:0)
z
的返回值将是未定义的行为,因为您没有在此函数中初始化x
变量的值。该函数的返回值将不一致,有时将是24,有时将是另一个值。