我已经看到了一个以上的问题,但是并不能真正解决我的问题。代码更大,但是问题出在这部分。我有这个东西:
int globalx=12;
int globaly=10;
void Function (int measurex, int measurey)
float thingx()
{
(((globalx/2)-measurex)/(globalx/2));
}
float totalx=globalx/(float)thingx;
float totaly=globaly/2;
并且它有问题,会返回该错误。顾名思义,globalx和globaly是两个全局变量。我在这里做错了什么?我该如何写一些我打算在这里做什么?
最佳答案
关于您的代码的几件事:
将thingx
替换为thingx()
。Function
定义应放在大括号{...}
中。
在thingx()
定义之外定义Function
(依赖于编译器,因为Nested functions are not allowed in standard C)。
将return
语句添加到thingx()
函数。
将int measurex
作为参数添加到thingx()
函数。
在Function
中,在获得totalx和totaly的值之后,您无需对它们进行任何操作(也许您只是没有将这个函数的整个代码放在您的问题中)。
您的函数定义应如下所示:
float thingx(int measurex)
{
return (((globalx/2)-measurex)/(globalx/2));
}
void Function (int measurex, int measurey) {
float totalx=globalx/(float)thingx(measurex); // <-- missing parentheses, should be thingx(...)
float totaly=globaly/2;
// You probably want to do something with totalx and totaly here...
}
主要:
int globalx=12;
int globaly=10;
Function(globalx, globaly);
另外,请记住,这会将结果截断为整数
globaly/2
,因为globaly
被定义为int(您可以阅读有关整数除法的内容:What is the behavior of integer division?)