问题
我正在使用 GLib 2.0 库,并声明了一个 gunit64 变量。我希望将其值打印到屏幕上,但它无法正常工作。
代码
以以下代码片段为例。我声明了一个 guint64 变量,并尝试打印它的值。
guint64 myValue = 24324823479324;
printf("My Value: %d\n", myValue);
警告
我收到这个警告:
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘guint64’
输出
我在屏幕上得到一个奇怪的负数:
我的价值:-1871285220
进一步的评论
我尝试搜索 API 的文档,并在 guint64 下找到以下内容:
在所有平台上保证为 64 位的无符号整数。此类型的值范围可以从 0 到 G_MAXUINT64 (= 18,446,744,073,709,551,615)。
要打印或扫描此类型的值,请使用 G_GINT64_MODIFIER 和/或 G_GUINT64_FORMAT。
因此,我假设我必须使用修饰符或格式定义。但是,文档没有显示如何使用它们。有人可以帮我吗?