我假设为double参数传递的int参数将被转换为doubles。例如
我打电话给:
画线(根,“hi”,5,5,50,50);
日期:
GooCanvasItem * make_line(GooCanvasItem * parent, char * name, gdouble x1, gdouble y1, gdouble x2, gdouble y2)
{
printf("from make line: %f %f %f %f\n", x1, y1, x2, y2);
//...
}
printf
产生:from make line: 0.000000 0.000000 0.000000 0.000000
当我叫它
make_line(root, "hi", 5.0,5.0,50.0,50.0);
它给出了正确的输出。
将
gdouble
更改为double
似乎无法解决问题。 最佳答案
a
(5)不会转换为0
。
我相信您在%d
中使用printf
而不是%f
来打印双值。在编译代码时打开编译器警告。
使用gcc的-Wformat
选项。
关于c - GCC编译器选项将int arg转换为double?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13073592/