C Unsigned int 提供负值?

标签 c int unsigned

我有一个无符号整数,但是当我使用 %d 打印出来时,有时会有一个负值?

最佳答案

打印 %d 会将整数读取为带符号的十进制数,而不管其定义的类型如何。

要打印无符号数,请使用 %u

发生这种情况是因为 C 处理可变参数的方式。编译器只是从堆栈中提取值(类型为 void* 并指向调用堆栈)并且 printf 必须从您提供的格式字符串中找出数据包含的内容

这就是您需要提供格式字符串的原因 - C 无法提供 RTTI或“基类”(例如 Java 中的 Object)以从中获取通用或预定义的 toString

关于C Unsigned int 提供负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831753/

相关文章:

c - 写入大小 4 无效

c - 这会在复制字符串时起作用吗?

sql-server - 将数据类型 numeric 转换为 int 时出错

c - 将 unsigned int 传递给函数是否会导致其丢失位?

c - 我得到方形阵列的意外结果?

c - getchar() 并调节循环以中断特定字符

c - 全局缓冲区溢出,Windows 环境

C具有不同指针的相同地址?

c - 编写 Vending 程序,while 语句不会中断?

c - 这段代码的 "False"输出背后的原因是什么?