admin 管理员组文章数量: 1086019
2024年3月29日发(作者:打官司千万不要找法律工作者)
c语言(char)码
c语言程序设计 课程是高等院校计算机专业基础课程之一,其教学效果直接影响学生
在计算机方面的应用。下面来个大家介绍c语言char的用法。
1.字符型(char)简介
字符型(char)用作储存字符(character),例如英文字母或标点。严格来说,char 其
实也就是整数类型(integer type),因为 char 类型储存的实际上就是整数,而不是字符。
计算机采用特定的整数编码去则表示特定的字符。美国广泛采用的编码就是
ascii(american standard code for information interchange 美国信息互换标准编码)。
比如:ascii 采用 65 去代表大写字母 a,因此存储字母 a 实际上存储的就是整数65。
特别注意:许多ibm大型机采用另一种编码——ebcdic(extended binary-coded decimal
interchange code 扩展的二进制编码的十进制互换码);相同国家的计算机采用的编码可
能将全然相同。
ascii 的范围是 0 到 ,故而 7 位(bit)就足以表示全部 ascii。char 一般占用 8
位内存单元,表示ascii绰绰有余。许多系统都提供扩展ascii(extended ascii),并且
所需空间仍然在 8 位以内。注意,不同的系统提供的扩展 ascii 的编码方式可能有所不
同!
许多字符集远远超过了 8 位所能够则表示的范围(比如汉字字符集),采用这种字符
集做为基本字符集的系统中,char 可能将就是 16 位的,甚至可能将就是 32 位的。总
之,c 确保 char 占用空间的大小不足以储存系统所用的基本字符集的编码。c 语言定义
一个字节(byte)的位数为 char 的位数,所以一个字节可能将就是 16 位,也可能将就是
32 位,而不仅仅局限于 8 位。
2. 声明字符型变量
字符型变量的声明方式和其它类型变量的声明方式一样:
char good;
char better, best;
以上代码声明了三个字符型变量:good、better,和 best。
3. 字符常量与初始化
我们可以使用以下语句来初始化字符型变量:
char ch = 'a';
这个语句把 ch 的值初始化为 a 的编码值。在这个语句中,'a' 是字符常量。c 语
言中,使用单引号把字符引起来就构成字符常量。我们来看另外一个例子:
char fail; /* 声明一个字符型变量 */
fail = 'f'; /* 正确 */
fail = "f"; /* 弄错!"f" 就是字符串字面量 */
把字符用双引号引起来构成字符串字面量,所以第三个语句是错误的。我们会在后续
的教程中讨论字符串,现在暂且把它放下。
因为字符实质上就是以数字的形式存储的,所以我们可以轻易采用数字去初始化字符
变量,或者给字符变量赋值:
char ch = 65; /* 不好的风格 */
在 ascii 中,a 的编码就是 65,所以对于采用 ascii 的系统来说,这个语句等同
于 char ch = 'a';。采用非 ascii 的系统中,65 代表的不一定就是 a,而有可能就是
其它任何字符,所以采用数字去初始化字符变量,或者给字符变量赋值就是一种不好的风
格,因为移植性太差了!但是,采用字符常量(比如 'a')去初始化字符变量,或者给字符
变量赋值,字符变量获得的一定就是我们所期盼的字符的编码值。比如:
char ch = 'a';
无论在采用任何编码的系统中,ch 都能获得字符 a 所对应的编码值。这是因为编译
器可以自动把 'a' 转化成 a 所对应的编码值。因此,我们必须采用字符常量去初始化字
符变量,或者给字符变量赋值;而不要用数字。
有趣的是,c 使用 int 类型来处理字符常量,而不是 char 类型。例如,在使用32
位 int 的ascii 系统中,以下代码
char ch = 'c';
'c' 的编码值 67 被存储于 32 位的内存单元中;不过 ch 仍然存储于 8 位的内存单
元中,只是它的值变成了 67。因此,我们可以定义形如 'good' 的古怪字符常量。因为
每个字符的编码值占用 8 位的内存单元,所以这个常量刚好可以存储于 32 位的内存单
元。然而,用这种字符常量初始化字符变量,或者给字符变量赋值的话,导致的结果是,
字符变量只能得到字符常量的最后 8 位。也就是说,以下代码
char ch = 'good';
ch 得到的是 'd' 的值。
以后,在没特定表明的情况下,我们探讨的都就是 ascii。
版权声明:本文标题:c语言(char)码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1711641842a603232.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论