为什么当为“char”分配“int”时不会丢失数据?

问题描述 投票:0回答:1

我是一名 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;
}
c integer char
1个回答
0
投票

printf("%x\n", y);
是未定义行为 (UB),因为您指定使用格式字符串
unsigned int
打印
%x
,但随后向其传递
char
。 如果您这样做
int x = 0xaaaaaaaa;
它会在我的系统上打印
ffffffaa

© www.soinside.com 2019 - 2024. All rights reserved.