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。
当我尝试下面的代码片段时,它打印 -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。