Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91865
  • 博文数量: 57
  • 博客积分: 1570
  • 博客等级: 上尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-15 19:23
文章分类

全部博文(57)

文章存档

2012年(6)

2009年(49)

2008年(2)

我的朋友

分类: C/C++

2009-04-29 18:45:24

char类型用于存储字母和标点符号之类的字符。但在技术实现上是char却是整数类型,这是因为char类型实际存储的是整数而不是字符。使用ASCII码的系统中,char类型通常定义为使用8 bit内存单元,标准的ASCII码值的范围从0到127,只需7 bit即可表示。所以更普遍一点看来,C保证char类型足够大,以存储其实现所在的系统上的基本字符集。

许多字符集包含远多于127甚至远多于255个值,例如:日本的kanji字符集;商用的Unicode字符集(目前已有超过96000个字符); ISO/IEC 10646字符集(和Unicode兼容)。C把一个字节(byte)定义为char类型使用的bit数,所以在以上的系统上,C文档中提到的一个字节是16位或者是32位,而不是约定的8位。

为了保证移植性,"char grade = 65;"如此的语句是一种不良的编程风格,仅对于ASCII是可以的,而使用'A'代替65则可以在任意系统中正常工作。

C将字符常量视为int类型而非char类型,可以定义一个字符常量'FATE',这将把4个独立的8位ASCII码存储在一个32位单元里(在int类型为32位的ASCII系统中),如果把这个字符常量赋给一个char变量,那么只有后8位会起作用,因此变量的值为'E',可以用putchar输出来作证明。

阅读(740) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~