我假设为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/

10-10 14:09