我有这个,当我尝试编译时,终端给我错误;有人可以帮助我吗?
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
答案 0 :(得分:3)
如果func
不正确,(x*x)+(y*y)+(z*z)<=4
会返回什么?你没有定义那种情况,但之后在函数中没有任何内容。控制流(即执行路径)已经到达函数的末尾而没有返回任何内容,但是应该返回,因为该函数是非空的。因此,“控制到达无效功能的终点”。
答案 1 :(得分:2)
您的函数并不总是返回值,因为它仅在if ()
test为true时才返回值(2.0)。使用缩进将有所帮助。
答案 2 :(得分:1)
这是因为return
语句跟在if()
块之后。
如果该陈述为真,则该函数将返回2.0
,如果该值为假,则它将到达函数的末尾而不返回值。
答案 3 :(得分:1)
您的代码
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
如果您使用缩进将是
int e=0;
float func(float x, float y, float z)
{
e++;
if ((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
如果您使用大括号将是
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
{
return 2.0;
}
}
这显然是道路不会返回值。
但声明
if((x*x)+(y*y)+(z*z)<=4)
可以整理以使其更具可读性
也许
if (((x*x) + (y*y) + (z*z)) <= 4)