unsigned int 变量如何存储负值?

How is unsigned int variable able to store negative value?

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

代码:

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

输出:-1

这怎么可能?

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

%d 说明符告诉 printf、"Interpret this value as a signed integer"。即使 a 的值为 0xFFFFFFFF (4,294,967,296),当解释为有符号值时,它将显示为 -1。