我有以下代码:
#include <stdio.h>
int main() {
unsigned int a = -1;
int b = -1;
printf("%x\n", a);
printf("%x\n", b);
printf("%d\n", a);
printf("%d\n", b);
printf("%u\n", a);
printf("%u\n", b);
return 0;
}
输出结果为:
ffffffff
ffffffff
-1
-1
4294967295
4294967295
我可以看出一个值根据传递给 printf
函数的值被解释为有符号或无符号。 在两种情况下,字节是相同的 (ffffffff
)。那么,“unsigned
”一词的含义是什么?
printf
函数完成的,我无法理解unsigned
单词所起的作用。在我的示例中,对于有符号和无符号变量,我都可以看到它的值是有符号或无符号的。为了澄清,如果我可以看到一个有符号变量打印为有符号或无符号,那么unsigned
单词是用来做什么的? - rvillablanca%d
打印无符号值或用%u
或%x
打印有符号值,这是未定义行为。因此,您无法看到已签名的变量作为有符号或无符号打印出来。 - The Paramagnetic Croissant