gpt4 book ai didi

c - C中如何确定unsigned char的范围?

转载 作者:太空狗 更新时间:2023-10-29 16:00:28 26 4
gpt4 key购买 nike

我的编译器的 unsigned char 包含 1 个字节。

据我所知,unsigned char 的范围是从 0 到 2^8 - 1,即 255。

现在我想确认 unsigned char 可以显示的最大整数是 255。

下面是我的代码:

#include <stdio.h>
#include <limits.h>
int main(void)
{
printf("unsigned char has %d bytes.\n", sizeof(unsigned char));

unsigned char a;

a = 0;

printf("%d\n", a - 1);
printf("%u\n", a - 1);
printf("%lu\n", a - 1);
printf("%llu\n", a - 1);
printf("%zu\n", a - 1);

return 0;
}

输出是

unsigned char has 1 bytes.
-1
4294967295
4294967295
4294967295
4294967295

4294967295 是 2^32 - 1

我哪里错了?

最佳答案

首先,当您将小于 int 的整数参数传递给可变参数函数(如 printf)时,它会自动提升为 int.

其次,当您使用算术时,较小的整数类型再次被提升为int

阅读例如this implicit conversion reference获取更多信息。

如果你想打印char(或者更确切地说是unsigned char)值,你需要为格式说明符使用hh前缀(参见例如 this printf and family reference ):

printf("%hhu\n", (unsigned char) (a - 1));

关于c - C中如何确定unsigned char的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51239704/

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