我是一名 C 程序员新手。我定义了两个变量
int x = 0xffffffff
和 char y = x
,之后我使用 printf("%x\n", y)
函数打印了它;我本以为终端上会出现类似 ff
的内容,但它却在屏幕上打印了 ffffffff
。我想知道当 char 的存储大小为 1 时,char
如何存储 4 个字节的存储空间。
#include <stdio.h>
int main(void) {
int x = 0xffffffff;
char y = x;
printf("%x\n", y);
return 0;
}
printf("%x\n", y);
是未定义行为 (UB),因为您指定使用格式字符串 unsigned int
打印 %x
,但随后向其传递 char
。 如果您这样做 int x = 0xaaaaaaaa;
它会在我的系统上打印 ffffffaa
。