gpt4 book ai didi

c - 打印出字符时出现奇怪的前导 "f"

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:56 25 4
gpt4 key购买 nike

大家好,我写了下面的代码:

union endian {
char a;
int b;
} test;
char c;

test.b = 0xaabbccdd;
c = (char)test.a;
printf("0x%x\n", c);
printf("0x%x\n", test.b);
printf("0x%x\n", test.a);
printf("0x%x\n", (char)test.a);

但是输出是:

0xffffffdd
0xaabbccdd
0xffffffdd
0xffffffdd

我想知道为什么在char变量之前有一些前导0xffffff

最佳答案

%x 将其参数解释为 unsigned int。传递给可变参数函数的整数总是被提升为 int,因此您的带符号 char 值使用符号扩展被提升为带符号的 int,然后由 %x 解释为 unsigned int

您可以通过转换为 unsigned charuint8_t 来解决这个问题。

关于c - 打印出字符时出现奇怪的前导 "f",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com