0

double パラメーターに渡された int 引数は 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

二重値を印刷%dするprintf代わりに、で使用していると思います。%fコードをコンパイルするときにコンパイラの警告をオンにします。

-Wformatgccのオプションを使用します。

于 2012-10-25T17:10:38.023 に答える