警告:格式'%5f'需要输入'double',但参数3的类型为'int'

时间:2012-11-28 02:06:53

标签: c++ opengl floating-point compiler-errors printf

我收到(仅)以下编译错误:

  

RuberSystem.cpp:425:警告:格式'%5f'需要输入'double',但参数3的类型为'int'

以下是声明:

float x = 6000.0f;
float z = -6000.0f;
float lx = -6000.0f;
float lz = 6000.0f;
float angle = 0.0f;

这是第425行:

printf("Right pressed: angle=%5f\nx=%5f\nlx=%5f\nz=%5f\nlz=%5f",angle,x,lx,z,lz);

这些变量所经历的唯一操作是:

angle -= 0.01f;
lx = sin (angle);
lz = -cos (angle);

我也尝试使用(float)来运行这些操作,但没有运气。

可能有用的信息:这在我的Windows机器上运行,在Visual Studio 8中,现在我正在使用GNU g ++编译我的macbook。我已经为mac使用设置了正确的定义。

编辑:我在这些变量上又找到了一个操作:

gluLookAt(
  x, 1500.0, z,    // eye location
  x+lx, 0.0,   z+lz,    // center location
  0.0, 1.0,   0.0); //open GL function

我看了一下gluLookAt的代码,它似乎采用了浮点数并将它们存储在浮点数矩阵中,所以我也没有看到问题存在,但我认为这对我们来说是一件好事。份额。

答案:我是个白痴。调用angle -= 0.01f;...的方法的参数名为int xint y,因此void processSpecialKeys(int key, int x, int y) {

2 个答案:

答案 0 :(得分:2)

你在第425行有x的不同声明吗?例如:

float x;
void func(int x) { ... }

// or

float x;

for (int x = ...)
{
}

// or

#define x ...

答案 1 :(得分:0)

答案:调用角度-= 0.01f;...的方法的参数名为int xint y,因此:void processSpecialKeys(int key, int x, int y) {。谢谢大家的帮助。