7.3.2有符号字符和无符号字符
一、有、无符号字符的取值范围分别是多少? 二、C语言标准有没有说明普通char类型数据是有符号型还是无符号型? 三、为什么C允许使用单词signed和unsigned去修饰char类型? 四、char类型的可移植性技巧是什么? 五、整值类型(统称)包含什么? 六、枚举类型是什么?(暂时回答不了) |
既然C语言允许把字符作为整数来使用,那么char类型应该像整数类型一样也存在有符号型和无符号型两种。通常由符号字符的取值范围是-128~127, 而无符号字符的取值范围则是0~255. C语言标准没有说明普通char类型数据是有符号型还是无符号型,有些编译器把它们当作有符号型来处理,有些编译器则将它们当作无符号型来处理。(甚至还有一些编译器允许程序员通过编译器选项来选择把char类型当成有符号型还是无符号型。) 大多数时候,人们并不关心char类型是有符号型还是无符号型。但是,我们偶尔确实需要注意,特别是当使用字符型变量存储一个小值整数的时候。基于上述原因,标准C允许使用单词signed和unsigned来修饰char类型: signed char sch; unsigned char uch; 可移植性技巧: 不要假设char类型默认为signed或unsigned。如果有区别,用signed char 或unsigned char 代替char。 由于字符和整数之间有密切关系,C89采用术语整值类型(integral type)来(统称)包含整数类型和字符类型。枚举类型也属于整值类型。C99中的_Bool型是无符号整数类型。
|