据我所知,
但是在下面的程序中情况并非如此。
这里显示的输出结果为
void
函数中的return
语句会抛出一个错误。但是在下面的程序中情况并非如此。
这里显示的输出结果为
1
。这是为什么?main()
{
int i=5;
printf("%d",fun(fun(fun(i))));
}
void fun(int i)
{
if (i%2)
{
return (i+(7*4)-(5/2)+(2*2));
}
else
{
return (i+(17/5)-(34/15)+(5/2));
}
}
fun
可能会导致混乱的后果。这意味着它返回一个int
,当你稍后定义它时,编译器如何解决这个问题是无法确定的。自 C99 开始将禁止这种操作。 - Pascal Cuoq