(编辑更改C/C++为C)
请帮助我清楚地理解C语言中的char
和unsigned char
。特别是当我们在嵌入式设备和普通PC之间传输数据时(unsigned char
和普通char
缓冲区之间的差异)。
(编辑更改C/C++为C)
请帮助我清楚地理解C语言中的char
和unsigned char
。特别是当我们在嵌入式设备和普通PC之间传输数据时(unsigned char
和普通char
缓冲区之间的差异)。
unsigned char
不确定是否有符号,而 char
可能有或没有符号。(char
是否有符号或无符号是由实现定义的,这意味着它可以是任何一个,完全取决于编译器编写者的心情,但编译器必须记录它是哪个。) 在处理原始数据时,应明确使用 unsigned char
。在处理有意义的数据时,根据数据的含义选择有符号类型或无符号类型。如果数据的符号性完全不相关,则使用普通的 char
。 - This isn't my real name类型char是特殊的。它不是无符号字符或有符号字符。这些是三种不同的类型(而int和signed int是相同的类型)。char可能具有有符号或无符号的表示。
来自3.9.1基本类型
普通char、signed char和unsigned char是三种不同的类型。一个char、一个signed char和一个unsigned char占用相同的存储空间,并具有相同的对齐要求(3.11);也就是说,它们具有相同的对象表示。
char
类型可能以实现定义的方式被设为有符号或无符号,而unsigned char
类型则始终为无符号。 - user3447428char
时,这两种语言的行为方式确实完全相同... - Lundin