首页 > 解决方案 > unsigned int 变量如何存储负值?

问题描述

当我尝试下面的代码片段时,它打印 -1 作为输出。但是 unsigned int 是如何存储 -1 的呢?

代码:

unsigned int a = -1;
printf("a = %d \n",a)

输出:-1

这怎么可能?

注意:我在stackoverflow中看到了类似的问题。这是不同的。我的问题是为什么它打印 -1 作为输出,即使“a”是无符号的。

标签: cunsigned

解决方案


说明%d符告诉printf“将此值解释为有符号整数”。即使a值是0xFFFFFFFF(4,294,967,296),当解释为有符号值时,它也会显示为 -1。


推荐阅读