
字元型量
字元型量包括字元常量和字元变数。字元串常量是由一对双引号括起的字元序列。字元变数的取值是字元常量,即单个字元。字元变数的类型说明符是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 | 走纸换页 |
\\ | 反斜槓字元 \ |
\' | 单引号 ' |
\ddd | 1至3位八进制数所代表的字元 |
\xhh | 1到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.14159
void 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。应该注意的是,符号常量不是变数,它所代表的值在整个作用域内不能再改变。也就是说,在程式中,不能再用赋值语句对它重新赋值。