1、C语言基本类型:字符型(char)用法介绍字符型(char)简介字符型(char)用于储存字符(character),如英文字母或标点。严格来说,char其实也是整数类型(integertype),因为char类型储存的实际上是整数,而不是字符。计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码是ASCII(AmericanStandardCodeforInformationInterchange美国信息交换标准编码)。例如:ASCII使用65来代表大写字母A,因此存储字母A实际上存储的是整数?注意:许多IBM大型机使用另一种编码EBCDI。
2、08l13CR45-77M109m14SO78N110n15SI47/79O111o16DLE48080P112p17DC149181Q113q18DC250282R114r19DC351383S115s20DC452484T116t21NAK53585U117u22SYN54686V118v23ETB55787W119w24CAN56888X120x25EM57989Y121y。
3、26SUB90Z122z27ESC59;9112328FS609412631US63?95_127DELNUL空字符VT垂直制表SYN同步SOH标题开始FF走纸控制ETB信息组传送结束STX正文开始CR回车CAN作废ETX正文结束SO移位输出EM媒介结束EndofMediumEOT传输结束SI移位输入SUB换置ENQ询问字符DLEDataLinkEscapeESCEscapeACK确认DC1设备控制1FS文件分隔符BEL响铃DC2设备控。
4、制2GS组分隔符BS退格DC3设备控制3RS记录分隔符HT横向制表DC4设备控制4US单元分隔符LF换行NAK否定DEL删除不可打印字符(NonprintingCharacters)有些ASCII字符是不可打印的。例如退格、另起一行、警报等。C语言提供了两种方法来表示这种不可打印字符。第一种方法是使用ASCII编码。例如,ASCII编码中,7用于表示警报:charbeep=7;第二种方法是使用特殊符号序列,也就是所谓的转义字符escapesequences)。参见下表:(转义字符含义a警报(Alert(ANSIC。
5、II的系统中,65代表的不一定是A,而有可能是其它任何字符,所以使用数字来初始化字符变量,或者给字符变量赋值是一种不好的风格,因为移植性太差了!但是,使用字符常量(例如A)来初始化字符变量,或者给字符变量赋值,字符变量得到的一定是我们所期待的字符的编码值。例如:charch=A;无论在使用任何编码的系统中,ch都能够得到字符A所对应的编码值。这是因为编译器会自动把A转化成A所对应的编码值。因此,我们应该使用字符常量来初始化字符变量,或者给字符变量赋值;而不要用数字。有趣的是,C使用int类型来处理字符常量,而不是char类型。例如,在使用32位int的。
6、字符ASCII值控制字符ASCII值控制字符0NUL32(space)64961SOH33!65A97a2STX3466B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL3971G103g8BS40(72H104h9HT73I105i10LF42*74J106j11VT43+75K107k12FF76L?
7、II码表示字符,可以在八进制数前面加上,然后用单引号引起来。例如:beep=007;/*007代表a*/打头的那些0可以省略,也就是说,写成07或者7都一样。无论有没有打头的7都会被当成八进制数处理。从C89开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个x,然后再写1到3个十六进制数字。例如:nl=xa;/*xa代表*/注意:使用ASCII码时,要注意区分数字4的ASCII码是4代表字符而不是数字?此外,尽管和xa,a和007是等价的,但是我们应该尽可能使用和a,而不要用xa和。
8、的,甚至可能是32位的。总之,C保证char占用空间的大小足以储存系统所用的基本字符集的编码。C语言定义一个字节(byte)的位数为char的位数,所以一个字节可能是16位,也可能是32位,而不仅仅限于8位。声明字符型变量字符型变量的声明方式和其它类型变量的声明方式一样:chargood;charbetter,best;以上代码声明了三个字符型变量:good、better,和best。字符常量与初始化我们可以使用以下语句来初始化字符型变量:charch=A;这个语句把ch的值初始化为A的编码值。在这个语句中,A是字符常量。C语言。
9、b退格(Backspace)f换页(Formfeed)换行(Newline)回车(Carriagereturn)t水平制表符(Horizontaltab)v垂直制表符(Verticaltab)反斜杆(Backslash())单引号(Singlequote())双引号(Doublequote())?问号(Questionmark(?))0oo八进制数(Octalvalue(o代表一个八进制数字))xhh十六进制数(Hexadecimalvalue(h代表一个十六进制数字))给变量赋值的时候,转义字符必须使用单引号。
10、使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会导致PC机的显示屏换页。换行符()使活跃位置跳到下一行的开端。回车符()使活跃位置返回当前行的开端。水平制表符(t)使活跃位置移动若干个位置(通常是8个)。垂直制表符(v)使活跃位置换若干行。注:v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。、,以及使我们可以把,和用作字符常量。如果要打印以下句子:iscalledbackslash.我们需要使用如下语句:printf(iscalledbackslash.);0oo和xhh是ASCII码的两种特殊表示形式。如果想用八进制ASC。
11、;请各位自行编译执行此程序,查看其执行结果。输入字符后记得要按回车键。printf函数输出ch的值两次,第一次以字符的形式输出(因为格式限定符为%c),第二次以十进制整数的形式输出(因为格式限定符是%d)。注意:格式限定符只是用于指定数据的输出形式,而不是用来指定数据怎么存储。字符类型的符号某些编译器中,char默认是有符号的(signed)。对于这类型的编译器来说,char的表示范围通常是-128到?而另外一些编译器中,char默认是无符号的(unsigned)。对于这类型的编译器来说,char的表示范围通常是0到?一般来说,编译器的使用说明会注明它默认把char当作有符号的还是无符号的。从C89开始,我们可以使用关键字signed和unsigned来修饰char。这么一来,无论编译器默认char是有符号的也好,无符号的也罢,我们都可以用signedchar表示有符号char,也可以用unsignedchar表示无符号char。参考资料:CPrimer5thEditionC99标准。
12、ASCII系统中,以下代码charch=C;C的编码值67被存储于32位的内存单元中;不过ch仍然存储于8位的内存单元中,只是它的值变成了?因此,我们可以定义形如good的古怪字符常量。因为每个字符的编码值占用8位的内存单元,所以这个常量刚好可以存储于32位的内存单元。然而,用这种字符常量初始化字符变量,或者给字符变量赋值的话,导致的结果是,字符变量只能得到字符常量的最后8位。也就是说,以下代码charch=good;ch得到的是d的值。以后,在没有特殊说明的情况下,我们讨论的都是ASCII。ASCII值控制字符ASCII值控制。
13、C(ExtendedBinary-CodedDecimalInterchangeCode扩充的二进制编码的十进制交换码);不同国家的计算机使用的编码可能完全不同。ASCII的范围是0到故而7位(bit)就足以表示全部ASCII。char一般占用8位内存单元,表示ASCII绰绰有余。许多系统都提供扩展ASCII(ExtendedASCII),并且所需空间仍然在8位以内。注意,不同的系统提供的扩展ASCII的编码方式可能有所不同!许多字符集超出了8位所能表示的范围(例如汉字字符集),使用这种字符集作为基本字符集的系统中,char可能是16位。
14、?这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCII码的系统有效。和数字字符。例如:字符字符输出printf函数使用%c表示输出字符。因为字符是以1字节整数的形式存取的,所以,如果使用%d的话,输出的会是整数。例如:/*这个程序输出字符以及字符的整数编码*/#includeintmain(void)charch;printf(Pleaseenteracharacter.);scanf(%c,&ch);/*由用户输入一个字符*/printf(Thecodefor%cis%d.,ch,ch);return?
15、中,使用单引号把字符引起来就构成字符常量。我们来看另外一个例子:charfail;/*声明一个字符型变量*/fail=F;/*正确*/fail=F;/*错!F是字符串字面量*/把字符用双引号引起来构成字符串字面量,所以第三个语句是错误的。我们会在后续的教程中讨论字符串,现在暂且把它放下。因为字符实质上是以数字的形式存储的,所以我们可以直接使用数字来初始化字符变量,或者给字符变量赋值:charch=65;/*不好的风格*/在ASCII中,A的编码是所以对于使用ASCII的系统来说,这个语句等同于charch=A;。使用非ASC。
16、引住。例如:charnl=;下面我们详细学习每个转移字符的含义。a(警报)是ANSIC89添加的,用于产生可听或者可视的警报。a产生的效果取决于硬件。一般来说,输出a会产生鸣响。但是在某些系统,输出a不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,a不应该改变当前活跃位置(activeposition)。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出a不会导致光标移动位置。b、f、、、t,以及v都是输出设备控制符。退格符(b)使当前行的活跃位置后退一个位置。换页符(f。