c语言常识部分【1】

  3.2.4 字符型数据及其表示

  1. 字符型数据

  文字处理是计算机的一个重要应用领域,这个应用领域的程序必须能够使用和处理字符形式的数据。在C语言中,字符型数据包括字符和字符串两种,例如'a'是字符,而"Windows" 是字符串。

  字符型数据在计算机中存储的是字符的ASCII码(ASCII码表见附录A),一个字符的存储占用一个字节。因为ASCII码形式上就是0 到255之间的整数,因此C语言中字符型数据和整型数据可以通用。例如,字符"A"的ASCII码值用二进制数表示是1000001,用十进制数表示是65,在计算机中的存储示意图见图3-6。由图可见,字符"A"的存储形式实际上就是一个整型数65,所以它可以直接与整型数据进行算术运算、混合运算,可以与整型变量相互赋值,也可以将字符型数据以字符或整数两种形式输出。以字符形式输出时,先将ASCII码值转换为相应的字符,然后再输出;以整数形式输出时,直接将ASCII码值作为整数输出。

  2.字符型常量

  字符常量亦被称为字符常数。C语言中字符常量是括在一对单引号内的一个字符。 例如:'x'、'B'、'b'、'$'、'?'、' '(表示空格字符)、'3'都是字符常量,注意其中'B'和'b'是不同的字符常量。

  除了以上形式的字符常量外,对于常用的但却难以用一般形式表示的不可显示字符,C语言提供了一种特殊的字符常量,即用一个转义标识符"\"开头,后续需要的转义字符来表示。常用的转义字符序列的字符常量见表3-4。

  表3-4 转义字符序列及其功能

  转义字符 功 能

  \n 换行

  \t 水平跳格

  \b 退格

  \r 回车

  \f 走纸换页

  \\ 反斜线字符

  \' 单引号字符

  \" 双引号字符

  \ddd 1至3位八进制数表示的字符

  \xdd 1至2位十六进制数表示的字符

  转义字符是一种特殊形式的字符常量,其意思是将转义符"\"后的字符原来的含义进行转换,变成某种另外特殊约定的含义。

  例如,转义字符"\n"中的n已不代表字符常量"n",由于n前面是转义符"\",所以n就转义成换行。转义字符"\015"是"\ddd"形式的转义字符,其中"015"是八进制字符串,它表示了ASCII码表中编码为十进制13的字符,也就是回车。转义字符"\x1f"是"\xdd"形式的转义字符,其中"1f"是十六进制字符串,它表示了ASCII码表中编码为十进制31的字符,也就是▼。

  可见,用转义字符方法可以表示任何可显示或不可显示的字符。在实际应用中,转义字符的使用很多,例如:例3-2中有以下程序行:

  printf("a=%f,b=%f\n",a,b);

  其中的"\n"就是转义字符换行。几乎每个程序中都会有一个或若干个这样的程序行。要注意其使用。

  3. 字符型变量

  字符型变量用于存放字符常量,即一个字符型变量可存放一个字符,所以一个字符型变量占用1个字节的内存容量。说明字符型变量的关键字是   char,使用时只需在说明语句中指明字符型数据类型和相应的变量名即可。例如:

  char s1, s2; /* 说明 s1,s2 为字符型变量 */

  s1='A'; /* 为s1赋字符常量'A' */

  s2='a'; /*为s2赋字符常量'a' */

  4. 字符串常量

  字符串常量是用一对双引号括起来的字符序列。这里的双引号仅起到字符串常量的边界符的作用,它并不是字符串常量的一部分。例如下面的字符串都是合法的字符串常量:

  "I am a student.\n","ABC"," ","a"

  注意不要把字符串常量和字符常量混淆,如"a"和'a'是根本不同的数据,前者是字符串常量,后者是字符常量。如果字符串常数中出现双引号,则要用反斜线'\"'将其转义,取消原有边界符的功能,使之仅作为双引号字符起作用。例如,要输出字符串:

  He says:"How do you do."

  应写成如下形式:

  printf ("He says:\"How do you do.\"");

  C语言对字符串常量的长度不加限制,编译程序总是自动地在字符串的结尾加上一个转义字符'\0'(即ASCII码是0,所对应的字符是空),作为字符串常量的结束标志。对字符串操作时,这个结束标志是非常重要的。例如输出字符串时,遇到这个结束标志才终止输出。

  可见,字符常量与字符串常量的区别有两个方面:从形式上看,字符常量是用单引号括起的单个字符,而字符串常量是用双引号括起的一串字符;从存储方式看,字符常量在内存中占一个字节,而字符串常量除了每个字符各占一个字节外,其字符串结束符'\0'也要占一个字节。例如:字符常量'a'占一个字节,而字符串常量"a" 占2个字节,如图3-7示意图所示。

  C语言没有专门的字符串变量,如果需要处理字符串,一般用字符型数组来实现。关于字符数组及其它字符数据处理问题在本书第八章作详细介绍。

  5. 字符数据的应用举例

  例3-3:计算字符'A'与整型数据25的和。

  /* L3_3.C */

  Main()

  { char a; /* 说明a为字符型变量 */

  int b; /* 说明b为整型变量 */

  a='A'; /* 为a赋字符常量'A' */

  b=a+25; /* 计算65+25并赋值给字符变量b */

  printf("%c,%d,%c,%d\n",a,a,b,b); /* 分别以字符型和整型两种格式输出a、b */

  }

  程序运行的输出结果如下:

  A,65,Z,90

  上述程序中a变量的值是'A',实际存放的是'A'的ASCII码65,它可直接与十进制整型常量25相加,所得整型数据90赋值给变量b,而90是大写字符'Z'的ASCII码,所以可以将a、b变量分别以字符型和整型两种格式输出。可见字符型数据和整型数据是可以通用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值