0

我假设为 double 参数传递的 int args 将转换为 double。例如

我在打电话:make_line(root, "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);

它给出了正确的输出。

更改gdoubledouble似乎无法解决问题。

4

1 回答 1

3

a(5) 不会转换为0.

我相信您使用的是%din yourprintf而不是%f打印双精度值。编译代码时打开编译器警告。

使用-Wformatgcc 的选项。

于 2012-10-25T17:10:38.023 回答