字元型量


字元型量

文章插图
字元型量【字元型量】字元型量包括字元常量和字元变数 。字元串常量是由一对双引号括起的字元序列 。字元变数的取值是字元常量,即单个字元 。字元变数的类型说明符是char 。字元变数类型说明的格式和书写规则都与整型变数相同 。
基本介绍中文名:字元型量
字元串常量:一对双引号括起的字元序列
类型说明符:char
类型说明:与整型变数相同
字元常量定义C语言中的字元常量是用单引号(')括起来的一个字元 。如'A'、'x'、'D'、 '?'、'3'、'X'等都是字元常量 。对于字元来说,'x'和'X'是两个不同的字元 。特点在C语言中,字元常量有以下特点:1.字元常量只能用单引号括起来,不能用双引号或其它括弧 。2.字元常量只能是单个字元,不能是字元串 。3.字元可以是字元集中任意字元 。但数字被定义为字元型之后就不能参与数值运算 。如'5'和5 是不同的 。'5'是字元常量,不能参与运算 。转义字元转义字元是一种特殊的字元常量 。转义字元以反斜线"\"开头,后跟一个或几个字元 。转义字元具有特定的含义,不同于字元原有的意义,故称“转义”字元 。例如,一些printf函式的格式串中用到的“\n”就是一个转义字元,其意义是“回车换行” 。转义字元主要用来表示那些用一般字元不便于表示的控制代码 。如'\r'就代表回车符号,而不代表反斜槓和字母r两个字元 。再如'\101'代表字母'A','\010'代表退格,'\x22'就代表" 。用这两种方法可以表示任何ASCII码字元 。这些转义字元只有几个很常用,'\n'、'\t'、'\''、'\\' 。附ASCII码字元表 。ASCII码字元表字元形式含义\n换行\t横向跳格(跳到下一个输出区域)\v竖向跳格\b退格\r回车\f走纸换页\\反斜槓字元 \\'单引号 '\ddd1至3位八进制数所代表的字元\xhh1到2位十六进制数所代表的字元广义地讲,C语言字元集中的任何一个字元均可用转义字元来表示 。表中的\ddd和\xhh正是为此而提出的 。ddd和hh分别为八进制和十六进制的ASCII代码 。如\101表示字?quot;A",\102表示字母"B",\134表示反斜线,\XOA表示换行等 。转义字元的使用void main(){int a,b,c;a=5; b=6; c=7;printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);}此程式练习转义字元的使用a、b、c为整数 5->a,6->b,7->c调用printf显示程式运行结果printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);程式在第一列输出a值5之后就是“\n”,故回车换行;接着又是“\t”,于是跳到下一定位点置(设定位点置间隔为8),再输出b值6;空二格再输出c 值7后又是"\n",因此再回车换行;再空二格之后又输出a值5;再空三格又输出b的值6;再次后"\t"跳到下一定位点置(与上一行的6 对齐),但下一转义字元“\b”又使退回一格,故紧挨着6再输出c值7 。字元变数字元变数是用来存放字元常量的,一个字元变数中只能存放一个字元 。字元变数的定义形式如右:char x1,x2; 定义了两个字元型变数 。可以使用赋值语句对变数x1和x2赋值,如:x1='x’;x2='y'; 字元型数据(常量和变数)在记忆体中占一个位元组的空间 。系统在表示一个字元型数据时,并不是将字元本身的形状存入记忆体,而只是将字元的ASCII码存入记忆体 。在记忆体中所有的数据又是以二进制的形式存放的 。所以上面的例子中x1和x2在记忆体中的表示如下: 'x'、'y'的ASCII码为120、121 。而120、121的二进制形式为01111000、 01111001 。所以x1、x2在记忆体中的表示为 01111000、01111001 在这种情况下,我们也可以把字元数据当成数值来对待 。看下面几个例子:main() { char x1,x2; x1=120;x2=121; printf("%c,%c",x1,x2); } 运行结果: x,y这个例子中给x1和x2两个字元型变数分别赋了两个整型常量120和121。而在输出的时候是按照字元型数据输出x1与x2的值 。运行结果是字元,这就说明:字元型数据可以看成是0到255之间的整型数据 。main() { char x1,x2; x1='x';x2='y'; x1=x1-32; x2=x2-32; printf("%c,%c",x1,x2); } 运行结果: X,Y这个例子是将小写字母转化为大写字母的程式 。我们在对ASCII码字元表进行观察后会发现,大小写对应的字母,它们之间的ASCII码正好相差32 。利用这个特性和上一个特性,我们可以编写出非常简单的大小写转化程式,正如本例 。字元串常量字元串常量是由一对双引号括起的字元序列 。例如: "CHINA","C program:,"$12.5" 等都是合法的字元串常量 。字元串常量和字元常量是不同的量 。它们之间主要有以下区别:1.字元常量由单引号括起来,字元串常量由双引号括起来 。2.字元常量只能是单个字元,字元串常量则可以含一个或多个字元 。3.可以把一个字元常量赋予一个字元变数,但不能把一个字元串常量赋予一个字元变数 。在C语言中没有相应的字元串变数 。这是与BASIC 语言不同的 。但是可以用一个字元数组来存放一个字元串常量 。在数组一章内予以介绍 。4.字元常量占一个位元组的记忆体空间 。字元串常量占的记忆体位元组数等于字元串中位元组数加1 。增加的一个位元组中存放字元"\0"(ASCII码为0) 。这是字元串结束的标誌 。例如,字元串 "C program"在记忆体中所占的位元组为:C program\0 。字元常量'a'和字元串常量"a"虽然都只有一个字元,但在记忆体中的情况是不同的 。'a'在记忆体中占一个位元组,可表示为:a"a"在记忆体中占二个位元组,可表示为:a\0符号常量符号常量在C语言中,可以用一个标识符来表示一个常量,称之为符号常量 。符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量其中#define也是一条预处理命令(预处理命令都?quot;#"开头),称为宏定义命令(在第九章预处理程式中将进一步介绍),其功能是把该标识符定义为其后的常量值 。一经定义,以后在程式中所有出现该标识符的地方均代之以该常量值 。习惯上符号常量的标识符用大写字母,变数标识符用小写字母,以示区别 。#define PI 3.14159void main(){float s,r;r=5;s=PI*r*r;printf("s=%f\n",s);}由宏定义命令定义PI 为3.14159 s,r定义为实数 5->r PI*r*r->s显示程式结果 float s,r; r=5; s=PI*r*r; 本程式在主函式之前由宏定义命令定义PI 为3.14159,在程式中即以该值代替PI。s=PI*r*r等效于s=3.14159*r*r 。应该注意的是,符号常量不是变数,它所代表的值在整个作用域内不能再改变 。也就是说,在程式中,不能再用赋值语句对它重新赋值 。