gpt4 book ai didi

c - 使用 glib 时如何打印 guint64 值?

转载 作者:太空狗 更新时间:2023-10-29 17:19:49 35 4
gpt4 key购买 nike

问题

我正在使用 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’ 

输出

我在屏幕上看到一个奇怪的负数:

My Value: -1871285220

进一步评论

我试着搜索API的文档,在guint64下找到了如下内容:

An unsigned integer guaranteed to be 64 bits on all platforms. Values of this type can range from 0 to G_MAXUINT64 (= 18,446,744,073,709,551,615).

To print or scan values of this type, use G_GINT64_MODIFIER and/or G_GUINT64_FORMAT.

因此,我假设我必须使用修饰符或格式定义。但是,文档没有说明如何使用它们。有人可以帮帮我吗?

最佳答案

您找到了合适的 macro for this .下面是如何使用它:

printf("My value: %" G_GUINT64_FORMAT "\n", myValue);

请注意,宏是一个带引号的字符串文字,因此上面的语法是正确的。另请注意,% 不是宏的一部分。

你的数字看起来是负数,因为你正在使用 %d,它需要一个 int,而你的数字的位,当被视为一个较小的、有符号的 int,编码一些负数。

关于c - 使用 glib 时如何打印 guint64 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15272976/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com