C语言字符型数据(4、5).doc

上传人:自*** 文档编号:126230173 上传时间:2020-03-23 格式:DOC 页数:9 大小:79.50KB
返回 下载 相关 举报
C语言字符型数据(4、5).doc_第1页
第1页 / 共9页
C语言字符型数据(4、5).doc_第2页
第2页 / 共9页
C语言字符型数据(4、5).doc_第3页
第3页 / 共9页
C语言字符型数据(4、5).doc_第4页
第4页 / 共9页
C语言字符型数据(4、5).doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《C语言字符型数据(4、5).doc》由会员分享,可在线阅读,更多相关《C语言字符型数据(4、5).doc(9页珍藏版)》请在金锄头文库上搜索。

1、2.5.1字符常量字符常量是指用一对单引号括起来的一个字符。如a,9,!。字符常量中的单引号只起定界作用并不表示字符本身。单引号中的字符不能是单引号()和反斜杠(),它们特有的表示法在转义字符中介绍。在CC语言中,字符是按其所对应的ASCII码值来存储的,一个字符占一个字节。例如:字符ASCII码值(十进制)!33048149957A65B66a97b98注意字符9和数字9的区别,前者是字符常量,后者是整型常量,它们的含义和在计算机中的存储方式都截然不同。由于C语言中字符常量是按整数(short型)存储的,所以字符常量可以像整数一样在程序中参与相关的运算。例如:a32;/*执行结果97-32=

2、65*/A+32;/*执行结果65+32=97*/99;/*执行结果57-9=48*/2.5.2字符串常量字符串常量是指用一对双引号括起来的一串字符。双引号只起定界作用,双引号括起的字符串中不能是双引号()和反斜杠(),它们特有的表示法在转义字符中介绍。例如:China,Cprogram,YES&NO,33312-2341,A等。C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”,即ASCII码值为0的字符NULL,常用0表示。因此在程序中,长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。例如,字符串China有5个字符,作为字符串常量China存储

3、于内存中时,共占6个字节,系统自动在后面加上NULL字符,其存储形式为: 要特别注意字符串与字符串常量的区别,除了表示形式不同外,其存储性质也不相同,字符A只占1个字节,而字符串常量A占2个字节。2.5.3转义字符转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号(),用于表示字符串常量的双撇号()和反斜杠()等。转义字符用反斜杠后面跟一个字符或一个八进制或十六进制数表示。表2-4给出了C语言中常用的转义字符。字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在

4、这些字符前加上反斜杠。在C程序中使用转义字符ddd或者xhh可以方便灵活地表示任意字符。ddd为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII码值。x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII码值。使用转义字符时需要注意以下问题:1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。2)v垂直制表和f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。3)在C程序中,使用不可打印字符时,通常用转义字符表示。2.5.4符号常量C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别于一般用小写字母表

5、示的变量。符号常量在使用前必须先定义,定义的形式是:#define例如:#definePI3.14159266#defineTRUE11#definrFALSE00#defineSTAR*这里定义PI、TRUE、FLASE、STAR为符号常量,其值分别为3.1415926,1,0,*。#define是C语言的预处理命令,它表示经定义的符号常量在程序运行前将由其对应的常量替换。定义符号常量的目的是为了提高程序的可读性,便于程序的调试和修改。因此在定义符号常量名时,应使其尽可能地表达它所代表的常量的含义,例如前面所定义的符号常量名PI(),表示圆周率3.1415926。此外,若要对一个程序中多次使

6、用的符号常量的值进行修改,只须对预处理命令中定义的常量值进行修改即可。2.5.5字符变量字符变量用来存放字符常量,注意只能存放一个字符,不要以为在一个字符变量中可以放字符串。字符变量的定义形式如下:charc1,c2;它表示c1和c2为字符变量,各放一个字符。因此可以用下面语句对c1、c2赋值:c1=a;c2=b;c1、c2被指定为字符变量。但在第3行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1=a;c2=b;因为a和b的ASCII码为97和98。第4行将输出两个字符。%c是输出字符的格式。程序输出:它的作用是将两个小写字母转换为大写字母。因为a的ASCII码为

7、97,而A为65,b为98,B为66。从ASCII代码表中可以看到每一个小写字母比大写字母的ASCII码大32。即a=A+32。C语言的内部运算符很丰富,运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言有三大运算符:算术、关系与逻辑、位操作。另外,C还有一些特殊的运算符,用于完成一些特殊的任务。2.6.1算术运算符表2-5列出了C语言中允许的算术运算符。在C语言中,运算符“+”、“”、“*”和“/”的用法与大多数计算机语言的相同,几乎可用于所有C语言内定义的数据类型。当“/”被用于整数或字符时,结果取整。例如,在整数除法中,10/3=3。一元减法的实际效果等于用-1乘单个操作数,即任何

8、数值前放置减号将改变其符号。模运算符“%”在C语言中也同它在其它语言中的用法相同。切记,模运算取整数除法的余数,所以“%”不能用于float和double类型。 最后一行打印一个0和一个1,因为1/2整除时为0,余数为1,故1%2取余数1。2.6.2自增和自减C语言中有两个很有用的运算符,通常在其它计算机语言中是找不到它们的自增和自减运算符,+和-。运算符“+”是操作数加1,而“-”是操作数减1,换句话说:x=x+1;同+x;x=x-1;同-x;自增和自减运算符可用在操作数之前,也可放在其后,例如:x=x+1;可写成+x;或x+;但在表达式中这两种用法是有区别的。自增或自减运算符在操作数之前,

9、C语言在引用操作数之前就先执行加1或减1操作;运算符在操作数之后,C语言就先引用操作数的值,而后再进行加1或减1操作。请看下例:x=10;y=+x;此时,y=11。如果程序改为:x=10;y=x+;则y=10。在这两种情况下,x都被置为11,但区别在于设置的时刻,这种对自增和自减发生时刻的控制是非常有用的。在大多数C编译程序中,为自增和自减操作生成的程序代码比等价的赋值语句生成的代码要快得多,所以尽可能采用加1或减1运算符是一种好的选择。下面是算术运算符的优先级:最高+、-(一元减)*、/、%最低+、-编译程序对同级运算符按从左到右的顺序进行计算。当然,括号可改变计算顺序。C语言处理括号的方法

10、与几乎所有的计算机语言相同:强迫某个运算或某组运算的优先级升高。2.6.3关系和逻辑运算符关系运算符中的“关系”二字指的是一个值与另一个值之间的关系,逻辑运算符中的“逻辑”二字指的是连接关系的方式。因为关系和逻辑运算符常在一起使用,所以将它们放在一起讨论。关系和逻辑运算符概念中的关键是True(真)和Flase(假)。C语言中,非0为True,0为Flase。使用关系或逻辑运算符的表达式对Flase和Ture分别返回值0或1(见表2-6)。 表2-6给出于关系和逻辑运算符,下面用1和0给出逻辑真值表。关系和逻辑运算符的优先级比算术运算符低,即像表达式101+12的计算可以假定是对表达式10(1

11、+12)的计算,当然,该表达式的结果为Flase。在一个表达式中允许运算的组合。例如:105&!(109)|3= 10);2.6.4位操作符与其它语言不同,C语言支持全部的位操作符(BitwiseOperators)。因为C语言的设计目的是取代汇编语言,所以它必须支持汇编语言所具有的运算能力。位操作是对字节或字中的位(bit)进行测试、置位或移位处理,这里字节或字是针对C标准中的char和int数据类型而言的。位操作不能用于float、double、longdouble、void或其它复杂类型。表2-7给出了位操作的操作符。位操作中的AND、OR和NOT(1的补码)的真值表与逻辑运算等价,唯一

12、不同的是位操作是逐位进行运算的。如表2-8所示,当且仅当一个操作数为True时,异或的输出为True,否则为Flase。位操作通常用于设备驱动程序,例如调制解调器程序、磁盘文件管理程序和打印机驱动程序。这是因为位操作可屏蔽掉某些位,如奇偶校验位(奇偶校验位用于确保字节中的其它位不会发生错误通常奇偶校验位是字节的最高位)。通常我们可把位操作AND作为关闭位的手段,这就是说两个操作数中任一为0的位,其结果中对应位置为0。例如,下面的函数通过调用函数read_modem(),从调制解调器端口读入一个字符,并将奇偶校验位置成0。字节的位8是奇偶位,将该字节与一个位1到位7为1、位8为0的字节进行与操作

13、,可将该字节的奇偶校验位置成0。表达式ch&127正是将ch中每一位同127数字的对应位进行与操作,结果ch的位8被置成了0。在下面的例子中,假定ch接收到字符A并且奇偶位已经被置位。一般来说,位的AND、OR和XOR操作通过对操作数运算,直接对结果变量的每一位分别处理。正是因为这一原因(还有其它一些原因),位操作通常不像关系和逻辑运算符那样用在条件语句中,我们可以用例子说明这一点:假定X=7,那么x&8为Ture(1),而x&8却为Flase(0)。记住,关系和逻辑操作符结果不是0就是1。而相似的位操作通过相应处理,结果可为任意值。换言之,位操作可以有0或1以外的其它值,而逻辑运算符的计算结

14、果总是0或1。移位操作符和右移位数左移语句是:variable左移位数当某位从一端移出时,另一端移入0(某些计算机是送1,详细内容请查阅相应C编译程序用户手册)。切记:移位不同于循环,从一端移出的位并不送回到另一端去,移去的位永远丢失了,同时在另一端补0。移位操作可对外部设备(如D/A转换器)的输入和状态信息进行译码,移位操作还可用于整数的快速乘除运算。如表2-9所示(假定移位时补0),左移一位等效于乘2,而右移一位等效于除以2。每左移一位乘2,注意x2后,原x的信息已经丢失了,因为一位已经从一端出,每右移一位相当于被2除,注意,乘后再除时,除操作并不带回乘法时已经丢掉的高位。反码操作符为。的作用是将特定变量的各位状态取反,即将所有的1位置成0,所有的0位置成1。位操作符经常用在加密程序中,例如,若想生成一个不可读磁盘文件时,可以在文件上做一些位操作。最简单的方法是用下述方法,通过1的反码运算,将每个字节的每一位取反。原字节 00101100第一次取反码 11010011第二次取反码 00101100注意,对同一行进行连续的两次求反,总是得到原来的数字,所以第一次求反表示了字节的编码,第二次求反进行译码又得到了原来的值。可以用下面的函数encode()对字符进行编码。2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号