我有一个无符号整数,但是当我使用 %d 打印出来时,有时会有一个负值?
最佳答案
打印 %d
会将整数读取为带符号的十进制数,而不管其定义的类型如何。
要打印无符号数,请使用 %u
。
发生这种情况是因为 C 处理可变参数的方式。编译器只是从堆栈中提取值(类型为 void*
并指向调用堆栈)并且 printf
必须从您提供的格式字符串中找出数据包含的内容
这就是您需要提供格式字符串的原因 - C 无法提供 RTTI或“基类”(例如 Java 中的 Object
)以从中获取通用或预定义的 toString
。
关于C Unsigned int 提供负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831753/