(编辑改变C/C++到C)char和unsigned char有什么区别?
请帮我找出一个干净的澄清char
和unsigned char
在C.特别是当我们的嵌入式设备和普通PC机(缓冲区之间的差异之间传输数据unsigned char
和普通char
)。
(编辑改变C/C++到C)char和unsigned char有什么区别?
请帮我找出一个干净的澄清char
和unsigned char
在C.特别是当我们的嵌入式设备和普通PC机(缓冲区之间的差异之间传输数据unsigned char
和普通char
)。
你在问两种不同的语言,但在这方面,两者的答案(或多或少)是相同的。你真的应该决定你正在使用哪种语言。
差异:
char
是否带有符号相似之处:
如果你只是使用它们来传输原始字节值,没有算术,那么没有实际的区别。
如果我考虑'C'语言我可以在编码或解码操作期间知道char和unsigned char类型的差异和影响。 ? –
唯一真正的区别是'unsigned char'没有明确的签名,'char'可能被签名也可能不被签名。 (这是_implementation defined_ char'是否是有符号或无符号的,这意味着它可以完全处于编译器编写器的意愿之中,但编译器必须记录它是哪一个。)处理原始数据时,应该明确使用'unsigned char'。处理有意义的数据时,应根据数据的含义选择签名类型或未签名类型。如果数据的符号完全不相关,请使用普通的'char'。 –
char类型是特殊的。它不是一个无符号的字符或一个有符号的字符。这些是三种不同的类型(int和signed int是相同的类型)。一个char可能有一个有符号或无符号的表示。
从3.9.1基本类型
平原字符,符号的字符,和unsigned char三种不同类型。 A char,signed char和unsigned char占用相同数量的 存储并具有相同的对齐要求(3.11);也就是说,它们 具有相同的对象表示。
Hi Dieter,在硬件级别(在设备驱动程序开发中)完成的编码或解码操作期间是否有对_char_和_unsigned char_的任何考虑? –
谢谢,我澄清了。 –
没有C/C++这样的东西。您可以使用C或C++,但不能同时使用这两种。选择你想问的一种语言。在C中,区别在于签名。 'char'可以用实现定义的方式进行签名或无符号签名,而'unsigned char'显然总是无符号的。 – user3447428
在编码或解码操作中,我可以知道char和unsigned char类型的区别和作用。 ? –
@ user3447428虽然它们确实是不同的语言,但它确实没有任何意义去问“C/C++”是如何工作的,这两种语言在涉及“char”时的行为都完全相同...... – Lundin