我在遗留嵌入代码中看到人们使用signed char作为返回类型。需要在那里签名的是什么?是不是暗示char只是签名的char。
答案 0 :(得分:1)
char
,signed char
和unsigned char
都是不同的类型。
您的实施可以将char
设置为signed
或unsigned
。
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 char
或unsigned char
(哪一个实现定义,可能由编译器命令行开关控制),但char
是不同类型,与signed char
和unsigned char
不同。
因此,如果您想确保使用unsigned char
或signed char
,明确指定。否则,我们无法保证是否签名。