gpt4 book ai didi

C 和 ASCII 代码 : how could 128 represents a char if it's range is from -128 to 127?

转载 作者:行者123 更新时间:2023-11-30 14:44:42 24 4
gpt4 key购买 nike

我提到这个问题是因为我无法理解如果范围是从-128到127,如何用有符号字符表示从0到255的ASCII字符。

由于 char = sizeof(char)= 1 个字节,因此有理由认为它可以轻松表示最大 255 的值;

那么为什么赋值:char a = 128 没有任何错误,为什么我不应该使用 unsigned char 呢。

提前谢谢您!

最佳答案

char c = 128; 本身在 C 中是正确的。标准规定 char 包含 CHAR_BIT 位,该位可以更大大于 8。此外,char 可以是有符号或无符号的,由实现定义,并且 unsigned char 必须至少包含范围 [0, 255]。

因此,如果 char 大于 8 位,或者 char 默认情况下是无符号的,则此行是有效且相关的。

即使在常见的 8 位有符号 char 实现中,表达式仍然明确定义了如何将 128 转换为适合 char,所以没有问题。

在实际情况下,编译器通常会发出警告,例如 clang :
警告:从“int”到“char”的隐式转换会将值从 128 更改为 -128 [-Wconstant-conversion]

关于C 和 ASCII 代码 : how could 128 represents a char if it's range is from -128 to 127?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53417590/

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