C语言中signed char和char有什么区别?

时间:2017-11-24 08:19:10

标签: c

我在遗留嵌入代码中看到人们使用signed char作为返回类型。需要在那里签名的是什么?是不是暗示char只是签名的char。

3 个答案:

答案 0 :(得分:1)

charsigned charunsigned char都是不同的类型。

您的实施可以将char设置为signedunsigned

unsigned char具有标准设定的明确范围。简单地使用char的问题在于您的代码在不同平台上的行为可能不同。它甚至可以是1的补码或带符号的幅度类型,范围-127到+127。

答案 1 :(得分:1)

因为候选人中没有人重复的答案引用了规范中的正确段落:

  

6.2.5 [类型],第15段

     

char,signed char和unsigned char这三种类型统称为字符类型。实现应将char定义为具有与signed char或unsigned char相同的范围,表示和行为

所以char也可以。 (FWIW,我相信我在JNI遇到了char = unsigned char。)

答案 2 :(得分:0)

来自CppReference

  

字符类型

     
      
  • signed char - 输入已签名的字符。
  •   
  • unsigned char - 输入无符号字符表示。还用于检查对象表示(原始内存)。
  •   
  • char - 字符表示的类型。相当于signed charunsigned char(哪一个实现定义,可能由编译器命令行开关控制),但 char是不同类型,与signed charunsigned char不同。
  •   

因此,如果您想确保使用unsigned charsigned char明确指定。否则,我们无法保证是否签名。