C语言字符型数据,字符型数据由字母、符号和不用于算术操作的数字组成,又称为非数值型数据。字符型数据分为字符型(char)、带符号字符型(signed char)和无符号字符型(unsigned char)。
每个字符在内存中占用一个字节,用于存储它的ASCII码值,所以在C语言中,字符具有数值的性质,带符号字符与无符号字符能够参与到整型数据的运算当中。字符参与运算相当于对字符的ASCII码值进行运算。
字符型常量
字符型常量包括由一对单引号括起来的一个字符构成的一般字符常量和由反斜杠(\)
开头的特定的字符序列构成的转义字符。
1.一般字符常量
字符型常量是由一对单引号括起来的一个字符。这个字符是ASCII字符集中的字符,字符常量的值为该字符的ASCII值。例如:
'A'、'x'、'D'、 '?'、'3'、'X'
这些都是字符常量,但是’x’和’X’是不同的字符常量,从ASCII字符集中可以看到,’x’的码值为88,而’X’的码值为120。
字符常量可以像整数一样参与运算,如字符’A’的码值为65,则’A’+1=66,在ASCII字符集中66对应的字符为’B’,因此我们就可以这样写:’A’+1=’B’。
2.转义字符
转义字符是指由反斜杠(\)
开头的特定的字符序列。C语言允许使用这种特殊形式的字符常量,因为在程序设计过程中,有一些字符如回车符、退格符、制表符等控制符号,不能在屏幕上显示,也不能从键盘上输入,只能用转义字符来表示,如表所示。
(1)“\n”换行符的ASCII码值为10,常在输出时用于换行。如printf(“I am a student. \n”);输出字符串“I am a student.”后换行,下一次输出从另一行开始。
(2)“\t”水平制表符的ASCII码值为9,它的作用是将光标移到最接近8的倍数的位置,使得后面的输出从此开始。换句话说,如果所有数据都紧跟在制表符后面输出,则这些数据只能从第9列、第17列、第25列……开始。例如:
printf(" abc\tde\n");
输出的结果为:□abc□□□□de
(3)“\0”是空字符,它的ASCII码值为0,表示NULL,是字符串的结束标志。
(4)“\ddd”表示的是斜杠后面跟着三位八进制数,该三位八制数的值即为对应的八进制ASCII码值。例如:“\101”转换为十进制数为65,在ASCII字符集表上对应的是字母’A’。
(5)“\xhh”表示的是“\x”后面跟着二位十六进制数,该两位十六进制数为对应字符的十六进制ASCII码值。例如:“\x47”转换成十进制数为71,在ASCII字符集表上对应的是字母’G’。
#include <stdio.h>
void main( )
{
printf("boy\tgirl\rj\n");
}
程序运行的结果是:joy□□□□□girl
字符型变量
字符型变量就是用一个标识符表示字符型数据,并且该标识符的值可以发生变化。字符变量只能存放一个字符。
1.字符型变量的定义与存储
字符型变量就是值为字符常量的变量。字符型变量只能存放一个字符。
字符型变量的定义与整型变量、实数型变量的定义相同,如下:
char c1,ch1;
它表示定义两个字符型变量c1、c2,它们可以各自存放一个字符。
字符型变量用来存放字符型常量,但它存储的不是字符本身,而是该字符对应的ASCII代码的值。例如:
char ch;
ch='a';
实际上,字符型变量ch在内存中存储的不是字符a,而是字符a对应的ASCII代码的值97,换算成二进制数为01100001,因此字符型变量ch对应的内存单元中存放的是二进制数01100001。
正是因为在内存中字符数据以ASCII码存储,所以字符的存储形式与整型的存储形式类似,这样使得字符型数据和整型数据之间可以通用。
(1)以字符形式输出,代码如下:
#include<stdio.h>
void main( )
{
char ch1,ch2;
ch1='A';
ch2='B';
printf("%c,%c",ch1,ch2);
}
程序运行的结果为:A,B。
(2)以整型数据形式输出,代码如下:
#include<stdio.h>
void main( )
{
char ch1,ch2;
ch1='A';
ch2='B';
printf("%d,%d",ch1,ch2);
}
程序运行的结果为:65,66。
从实例可以看出,字符型变量既可以以字符的形式输出,也可以以整型的形式输出。以字符的形式输出时,需要先把存储单元中的ASCII的值转换成相应的字符,然后输出。以整型形式输出时,直接将ASCII码值作为整型数输出。
在C语言中允许将字符型数值赋给整型变量,也允许将整型数值赋给字符型变量。但字符型数据和整型数据之间通用的前提是必须在合法的范围内。因为两种数据类型数值的取值范围不同。字符数据只占一个字节,把字符看成无符号数时,它只能存放0~255范围内的整数;若是有符号数,则为-128~127。
2.字符型变量的简单运用
由于字符的存储形式与整型的存储形式类似,字符型数据和整型数据在一定范围内通用,因此字符型数据可以以其ASCII码值参与算术运算。
实例:字符型数据的运算。
#include<stdio.h>
void main( )
{
char c1,c2; /*定义两个字符型变量c1,c2*/
c1=97; /*将整型数据97赋值给字符型变量c1 */
c2=98; /*将整型数据98赋值给字符型变量c2 */
printf("%c %c \n",c1,c2); /*将字符型变量c1,c2以字符的形式输出*/
printf("%d %d \n", c1,c2); /*将字符型变量c1,c2以整型的形式输出*/
c1=c1-32;
c2=c2-32;
printf("%c %c \n",c1,c2);
}
程序运行的结果为:
a b
97 98
A B
如上所示:
(1)在一定范围内,字符型数值可以赋给整型变量,整型数值也可以赋给字符型变量。上例中我们定义了字符型变量c1,c2,然后将整型数据97赋值给字符型变量c1,将整型数据98赋值给字符型变量c2。
(2)字符型变量可以用字符形式输出(即%c),也可以用整数形式输出(即%d),但是应注意字符数据只占一个字节。
(3)程序的第9行和第10行是把两个小写字母a和b转换成大写字母A和B。’a’的ASCII码为97,而’A’为65,’b’为98,’B’为66。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算,即’a’+32会得到整数97,’a’-32会得到整数65。
评论前必须登录!
注册