我有这个,当我试图编译时,终端会给我错误;有人能帮我吗?
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
如果(x*x)+(y*y)+(z*z)<=4
不为真,func
应该返回什么?您还没有定义这种情况,但函数中没有任何后续内容。控制流(即执行路径)已经到达函数的末尾,但没有返回任何内容,但应该返回,因为函数是非空的。因此,"控制达到非无效功能的终点"。
您的函数并不总是返回值,因为只有当if ()
测试为true时,它才会返回值(2.0)。使用缩进将有所帮助。
这是因为return
语句跟在if()
块后面。
如果该语句为true,则函数将返回2.0
,如果为false,则将到达函数末尾而不返回值。
您的代码
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)