【问题标题】:What is the difference between char and unsigned char?char 和 unsigned char 有什么区别?
【发布时间】:2014-05-03 00:13:41
【问题描述】:

(已编辑将 C/C++ 更改为 C)

请帮我找出C语言中charunsigned char的清晰说明。特别是当我们在嵌入式设备和通用PC之间传输数据时(unsigned char的缓冲区和普通char之间的区别)。

【问题讨论】:

  • 没有 C/C++ 这样的东西。您可以使用 C 或 C++,但不能同时使用两者。选择您要询问的语言之一。在 C 中,区别在于符号。 char 可以以实现定义的方式有符号或无符号,而 unsigned char 显然总是无符号的。
  • 在编码或解码操作过程中,我能知道 char 和 unsigned char 类型的区别和影响吗? ?
  • @user3447428 虽然它们确实是不同的语言,并且询问“C/C++”中的某些东西是如何工作的确实没有意义,但在涉及 @ 时,两种语言的行为方式恰好相同987654327@...
  • @user3458841 什么是“编码或解码操作”?这可能意味着任何事情。
  • @Lundin 没关系。

标签: c char unsigned-char


【解决方案1】:

char 类型是特殊的。它不是无符号字符或有符号字符。这是三种不同的类型(而 int 和 signed int 是相同的类型)。 char 可能有带符号或无符号表示。

从 3.9.1 基本类型开始

Plain char、signed char 和 unsigned char 是三种不同的类型。一种 char、signed char 和 unsigned char 占用相同数量的 存储并具有相同的对齐要求(3.11);也就是说,他们 具有相同的对象表示。

【讨论】:

  • 嗨 Dieter,在硬件级别(在设备驱动程序中)进行的编码或解码操作期间,是否需要考虑 charunsigned char开发)?
  • 谢谢,我说清楚了。
【解决方案2】:

您询问的是两种不同的语言,但在这方面,两者的答案(或多或少)相同。不过,您确实应该决定使用哪种语言。

区别:

  • 它们是不同的类型
  • char 是有符号还是无符号由实现定义

相似之处:

  • 它们都是整数类型
  • 它们的大小相同(一个字节,至少 8 位)

如果您只是使用它们来传输原始字节值,没有算术,那么实际上没有区别。

【讨论】:

  • 如果我考虑一下“C”语言,我能知道在编码或解码操作期间 char 和 unsigned char 类型的区别和影响吗? ?
  • 唯一真正的区别是unsigned char 没有绝对签名,char 可能会也可能不会签名。 (char 是有符号还是无符号是实现定义,这意味着它可以是任何一种,完全由编译器编写者决定,但编译器必须记录它是哪一个。)处理原始数据时,您应该明确使用unsigned char。处理有意义的数据时,应根据数据的含义选择有符号类型或无符号类型。如果数据的签名完全不相关,请使用纯 char
猜你喜欢
  • 2020-10-08
  • 2016-07-07
  • 2022-01-03
  • 2012-03-02
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
相关资源
最近更新 更多