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型是无符号整数类型。

 

 
posted @ 2021-04-11 21:32  Sai佐为  阅读(846)  评论(0)    收藏  举报