【发布时间】:2021-03-28 00:58:09
【问题描述】:
对于一个学校项目,我正在尝试用 C 语言重新创建 stdio.h 库的 printf 函数。
我目前正在努力使unsigned int 打印部分正常工作,但由于某种原因,为什么我尝试使用真正的printf 打印一个无符号整数,它给了我一个警告(这被认为是我的学校)。有人能解释一下为什么吗?
这是我使用的代码行:printf("%u\n", 4294967295);。这是我遇到的错误:
main.c:18:17: warning: format specifies type 'unsigned int' but the argument has type 'long' [-Wformat]
printf("%u\n", 4294967295);
~~ ^~~~~~~~~~
%ld
1 warning generated.
【问题讨论】:
-
警告很清楚。你不明白哪一部分?
-
你必须写
4294967295U,而不是4294967295。 -
谢谢,解决了。感谢您的帮助。
-
整数常量的类型不是固定的,依赖于what type can actually represent that value。
-
刚刚取消删除@bruno
标签: c gcc printf long-integer unsigned-integer