问题
我正在使用GLib 2.0库,并声明了一个gunit64变量.我希望将其值显示在屏幕上,但它无法正常工作.
码
以下面的代码片段为例.我声明了一个guint64变量,并尝试打印它的值.
guint64 myValue = 24324823479324;
printf("My Value: %d\n", myValue);
Run Code Online (Sandbox Code Playgroud)
警告
我收到这个警告:
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘guint64’
Run Code Online (Sandbox Code Playgroud)
产量
我在屏幕上看到一个奇怪的负数:
我的价值:-1871285220
进一步评论
我试图搜索API的文档,我在guint64下找到了以下内容:
所有平台上的无符号整数保证为64位.此类型的值范围为0到G_MAXUINT64(= 18,446,744,073,709,551,615).
要打印或扫描此类型的值,请使用G_GINT64_MODIFIER和/或G_GUINT64_FORMAT.
因此,我假设我必须使用修饰符或格式定义.但是,文档未显示如何使用它们.有人能帮帮我吗?
unw*_*ind 10
你找到了合适的宏.以下是如何使用它:
printf("My value: %" G_GUINT64_FORMAT "\n", myValue);
Run Code Online (Sandbox Code Playgroud)
请注意,宏是带引号的字符串文字,因此上面是正确的语法.另请注意,%它不是宏的一部分.
您的号码显示为负数,因为您正在使用%d它int,当您将其视为一个较小的,已签名的int编码时,您需要的号码和数字位数为负数.
| 归档时间: |
|
| 查看次数: |
5212 次 |
| 最近记录: |