什么是unsigned char?

6 浏览
0 Comments

什么是unsigned char?

在C/C++中,unsigned char有什么用途?它与普通的char有什么区别?

admin 更改状态以发布 2023年5月23日
0
0 Comments

这取决于各个实现,因为 C 标准并未定义 char 的符号性。根据平台的不同,char 可能是 signedunsigned,因此如果您的实现取决于此,请明确要求 signed charunsigned char。如果您打算表示字符串中的字符,则只需使用 char,因为这将与您的平台在字符串中放置的内容相匹配。

signed charunsigned char 之间的区别正如您所期望的那样。在大多数平台上,signed char 将是一个 8 位的二进制补码数字,范围从 -128127,而 unsigned char 将是一个 8 位无符号整数(0255)。请注意,标准并不要求 char 类型有 8 位,只要求 sizeof(char) 返回 1。您可以使用 limits.h 中的 CHAR_BIT 获取 char 中的位数。尽管如此,今天几乎没有任何平台会有除 8 以外的 char 位数。

这里有一个关于此问题的很好的总结,请点击这里

正如其他人在我发布此问题后提到的那样,如果您真的想表示小整数,最好使用 int8_tuint8_t

0
0 Comments

\n\n在C++中,有三种不同的字符类型:\n\n- char\n- signed char\n- unsigned char\n\n如果你正在使用字符类型进行文本处理,请使用未经修饰的char:\n\n- 它是字符字面值的类型,例如\'a\'或\'0\'(仅在C++中,C中它们的类型为int)\n- 它是组成C字符串的类型,例如\"abcde\"\n\n它也可以作为数字值使用,但未指定该值是作为有符号还是无符号处理的。注意不要使用不等式进行字符比较 - 虽然如果你限制自己使用ASCII(0-127),你将基本上是安全的。\n\n如果你正在将字符类型作为数字使用,请使用:\n\n- signed char,它至少可以提供-127至127的范围。 (-128至127是常见的)\n- unsigned char,它至少可以提供0至255的范围。\n\n“至少”,因为C++标准只给出了每种数字类型所需覆盖的最小值范围。 sizeof(char)必须为1(即一个字节),但一个字节理论上可以为32位。 sizeof仍然会报告其大小为1 - 这意味着您可以拥有sizeof(char)== sizeof(long)==1。

0