我正在查看链接data type
中的数据类型写为char类型为1字节,范围为-128到127或0到255。
编辑:还有另一个问题Whats wrong with this C code?。但这不是同一个问题。标题说这个代码有什么问题,搜索不会轻易列出这个答案。人们必须完全分析这个问题才能理解这个问题。
编辑:看了几个答案和评论后,我又有了疑问。双引号内的字符串被视为char。如果我将双引号字符串传递给具有signed char类型参数的函数,我会收到警告。 itoa和许多其他库函数也使用char类型参数而不是signed char。当然,类型转换会避免这个问题。那么操作空终止字符串的函数的最佳参数类型是什么(例如LCD显示相关函数)?使用signed char或unsigned char(因为char是实现定义的,我猜它可能不是可移植的)
答案 0 :(得分:5)
char
"具有与signed char
或unsigned char
相同的表示和对齐方式,但始终是一种独特的类型"。
答案 1 :(得分:5)
char
具有实现定义的签名。这意味着一个编译器可以选择将其实现为signed
,将另一个编译器实现为unsigned
。
这就是为什么你永远不应该使用char
类型来存储数字的原因。一个更好的类型是uint8_t
。
答案 2 :(得分:2)
不,默认情况下它并不代表签名字符。根据C标准,char
是一个与签名和无符号字符不同的类型,它只是表现得像其他两个字符中的一个。
char,signed char和unsigned char这三种类型统称为字符类型。实现应将char定义为具有与signed char或unsigned char相同的范围,表示和行为。
在上一段的说明中:
在
<limits.h>
中定义的CHAR_MIN将具有值0或SCHAR_MIN之一,这可用于区分这两个选项。无论做出何种选择,char都是与其他两种类型不同的类型,并且与其中任何一种都不兼容。