版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——C语言中的BYTE和char字符C语言中的BYTE和char字符
在C语言中,字符character这个术语具有两个层次上的含义:书写源程序的字符和程序处理的字符以下是我为大家探寻整理的C语言中的BYTE和char字符,梦想能给大家带来扶助!更多精彩内容请持续关注我们我!
例如,在下面的源程序中"'之内的"你'、"好'、",'、"C'、"!'、"\n'就属于程序要处理的字符。
[cpp]viewplaincopy
#include
intmainvoid
printf你好,C!\n;
return0;
该源程序中的其他字符那么属于书写源程序的字符,这其中也可能包含并没有明显显示出来的字符,例如空格字符spacecharacter、水平制表符horizontaltab、垂直制表符verticaltab和换页符formfeed。
从某种意义上来说,编辑/编译器是一种采纳字符输入,输出可执行文件的软件,由它产生可执行文件经过加载成为内存中的程序,这个程序通常也不成制止地要处理字符。
编辑/编译器与它生产出的应用程序并不确定运行在同一个环境中,这就意味着两者可能要各自处理不同的字符集合。
编辑/编译器所要处理的字符就是书写C语言源程序所用的字符,这种字符的集合叫源字符集sourcecharacterset。而应用程序要处理的字符所构成的集合叫执行字符集executioncharacterset。
对于多数C语言学习者来说,由于编辑/编译环境与应用程序运行环境是重合的',可能意识不到源字符集与执行字符集之间的识别。
源字符集sourcecharacterset
源字符集中的字符就是编写C语言源程序的字符,也就是C语言要求编辑/编译器所运行的环境所供给的字符。这套字符由这几片面组成:根本字符集basiccharacterset、表示换行的字符new-linecharacter和扩展字符extendedcharacters。
根本字符集basiccharacterset包括:
ABCDEFGHIJKLM
NOPQRSTUVWXYZ
abcdefghijklm
nopqrstuvwxyz
0123456789
!#%*+,-./:
;=?[\]^_|~
空格spacecharacter
操纵符:horizontaltab,verticaltab,formfeed
一共是95个。这就是C语言对编辑/编译器运行环境的最根本的要求,言外之意就是只要编辑/编译器所运行环境供给这95个字符就可以编写C语言程序了。事实上C语言源程序也"主要'地由这95个字符组成。
此外,C语言还要求在编辑/编译器运行的环境中,0~9这十个字符的编号编码务必是连续的。
可惜的是,有些环境无法全部供给这95个字符。例如,据说有些国家的键盘上压根就没有"['这个键。
由于存在这种处境,所以C语言也容许用所谓的三字符序列trigraph来表示那些环境不供给的字符。譬如用"??'表示"',用"??'表示"'。下面的代码尽管看起来有些怪异,然而照旧是合法的C程序。
[cpp]viewplaincopy
#include
intmainvoid
??
printf你好,C!\n;
return0;
??
编译器也可以对根本字符集自行举行扩展,这就是所谓的扩展字符extendedcharacters。前面代码中的"你'、"好'就属于扩展字符。这些扩展字符只能展现在标识符、字符常量、字符串字面量、头名headername、解释以及某些预处理单词preprocessingtokenthatisneverconvertedtoatoken中。代码的其他其他片面展现扩展字符那么是一种未定义行为。
扩展字符的值是由概括的编译器定义的。源程序可以使用的全体字符的集合叫做扩展字符集extendedcharacterset。
执行字符集
应用程序运行的环境中的字符集theexecutioncharacterset也是一种扩展字符集extendedcharacterset。
其中也务必包括前面提到的源字符集中的那95个根本字符集,0~9这十个字符的编码也务必是连续的。
更加需要留神的是,C语言并没有要求执行环境中的根本字符集和编辑/编译环境中的根本字符集具有一致的编码方式,尽管这两个根本字符集的"符'是一致的。
执行环境中务必供给的字符还有alert,backspace,carriagereturn,newline以及一个各位都为0的字符nullcharacter。
执行环境中程序可以处理的其他字符也被叫做扩展字符extendedcharacters,这些扩展字符与根本字符集以及alert,backspace,carriagereturn,newline和nullcharacter共同构成了执行环境中的扩展字符集extendedcharacterset,或称之为执行字符集theexecutioncharacterset。
对于执行环境来说,扩展字符extendedcharacters同样是由编译器自行定义的。
C语言中的Byte
C语言中的Byte,宛如int等类型类似,同样不是一个确定长度的位组。C语言只是要求Byte能放得下执行环境中和编辑/编译环境中根本字符集的编码。这样在某些编译器中C语言中的Byte是9位就不难理解了,这并不违背C语言的根本定义。
同样的道理,假设在编辑/编译环境中,根本字符集的编码是8位,而在运行环境中根本字符集的编码是16位的话,那么Byte的大小鲜明就务必至少为16位。
由此可见,在C语境中的Byte并非是平日普遍认为的octet8位组。
C语言中的char数据类型
C语言中的char数据类型是一种整数类型integertype,它的大小被定义为1个Byte。亦即
sizeofchar1
若需要知道某个概括编译器的Byte到底是多少位,可以查看编译器供给的limits.h。其中定义的符号常量CHAR_BIT就是char类型的位数,也就是Byte的位数。
补充:
C标准的冲突?
addressableunitofdatalargeenoughtoholdanymemberofthebasiccharactersetoftheexecutionenviron
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论