c - C 中 unsigned int 的行为

标签 c int unsigned

C 中 unsigned int 的大小是 0 到 65,535 或 0 到 4,294,967,295

我在 C 中使用以下代码进行了测试:

unsigned int number = 0;
number -= 300;
printf("%d\n", number);

输出:-300

我记得如果 unsigned int 变量的值低于 0,它应该回绕,我期望输出类似于 4294966996。然而,从控制台打印的输出是 -300

我在 C++ 中测试了类似的语句,它确实给了我 4294966996

我的问题是:为什么输出 -300 尽管它是一个 unsigned int


PS:我浏览了几篇标题相似的帖子,但他们没有解决同一个问题:

signed vs unsigned int in C

Unexpected results on difference of unsigned ints

最佳答案

因为 printf("%d\n", number); 会打印一个带符号的值,即使参数是无符号的。使用 printf("%u\n", number); 来正确打印无符号值。

关于c - C 中 unsigned int 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27055983/

相关文章:

c - 如何在 C 中反转数字同时仍包含零?

c++ - 无符号负原语?

c - 乘法和除法无符号整数

c - C 是否提供运算符来检查类型的签名?

c - 三角形二维数组的动态内存分配

c - 终端顶行未按预期清除

c - 在 C 中编码 HTML 字符

python - 使用 "safe"将 float64 转换为 int64

c - char和int的严格比较

c - 为什么局部变量可以作为函数的返回值?