• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言中的BYTE和char深入解析

C语言中的BYTE和char深入解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c char byte,c byte转char,byte char,java byte char,delphi byte char等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

例如,在下面的源程序中“""”之内的“你”、“好”、“,”、“C”、“!”、“\n”就属于程序要处理的字符。

从某种意义上来说,编辑/编译器是一种接受字符输入,输出可执行文件的软件,由它产生可执行文件经过加载成为内存中的程序,这个程序通常也不可避免地要处理字符。

编辑/编译器与它生产出的应用程序并不一定运行在同一个环境中,这就意味着两者可能要各自处理不同的字符集合。

编辑/编译器所要处理的字符就是书写C语言源程序所用的字符,这种字符的集合叫源字符集(sourcecharacter set)。而应用程序要处理的字符所构成的集合叫执行字符集(execution character set)。

对于多数C语言学习者来说,由于编辑/编译环境与应用程序运行环境是重合的,可能意识不到源字符集与执行字符集之间的区别。

•源字符集(source character set)
源字符集中的字符就是编写C语言源程序的字符,也就是C语言要求编辑/编译器所运行的环境所提供的字符。这套字符由这几部分组成:基本字符集(basic character set)、表示换行的字符(new-line character)和扩展字符(extended characters)。

基本字符集(basic character set)包括:

A B C D E F G H I J K L M

N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m

n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9

! " # % & ' ( ) * + , - . / :

; < = > ? [ \ ] ^ _ { | } ~

空格(space character)

控制符:horizontal tab, vertical tab, form feed

一共是95个。这就是C语言对编辑/编译器运行环境的最基本的要求,言外之意就是只要编辑/编译器所运行环境提供这95个字符就可以编写C语言程序了。事实上C语言源程序也“主要”地由这95个字符组成。

此外,C语言还要求在编辑/编译器运行的环境中,0~9这十个字符的编号(编码)必须是连续的。

遗憾的是,有些环境无法全部提供这95个字符。例如,据说有些国家的键盘上压根就没有“[”这个键。

由于存在这种情况,所以C语言也容许用所谓的三字符序列(trigraph)来表示那些环境不提供的字符。比如用“??<”表示“{”,用“??>”表示“}”。下面的代码尽管看起来有些怪异,然而依然是合法的C程序。

扩展字符的值是由具体的编译器定义的。源程序可以使用的所有字符的集合叫做扩展字符集(extended character set)。

•执行字符集
应用程序运行的环境中的字符集(the execution character set)也是一种扩展字符集(extended character set)。

其中也必须包括前面提到的源字符集中的那95个基本字符集,0~9这十个字符的编码也必须是连续的。

特别需要注意的是,C语言并没有要求执行环境中的基本字符集和编辑/编译环境中的基本字符集具有相同的编码方式,尽管这两个基本字符集的“符”是相同的。

执行环境中必须提供的字符还有alert,backspace,carriage return,new line以及一个各位都为0的字符(null character)。

执行环境中程序可以处理的其他字符也被叫做扩展字符(extended characters),这些扩展字符与基本字符集以及alert,backspace,carriage return,new line和null character共同构成了执行环境中的扩展字符集(extended character set),或称之为执行字符集(the execution character set)。

对于执行环境来说,扩展字符(extended characters)同样是由编译器自行定义的。

•C语言中的Byte
C语言中的Byte,如同int等类型类似,同样不是一个确定长度的位组。C语言只是要求Byte能放得下执行环境中和编辑/编译环境中基本字符集的编码。这样在某些编译器中C语言中的Byte是9位就不难理解了,这并不违背C语言的基本定义。

同样的道理,如果在编辑/编译环境中,基本字符集的编码是8位,而在运行环境中基本字符集的编码是16位的话,那么Byte的大小显然就必须至少为16位。

由此可见,在C语境中的Byte并非是平时普遍认为的octet(8位组)。

•C语言中的char数据类型
C语言中的char数据类型是一种整数类型(integer type),它的大小被定义为1个Byte。亦即

sizeof (char)  ≡ 1

若需要知道某个具体编译器的Byte究竟是多少位,可以查看编译器提供的limits.h。其中定义的符号常量CHAR_BIT就是char类型的位数,也就是Byte的位数。

补充:

C标准的矛盾?

"addressable unit of data large enough to hold any member of the basic character set of the execution environment" (clause 3.6 of the C standard)

可是在5.2.1-3中

The representation of each member of the source and execution basic character sets shall fit in a byte.

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言中的BYTE和char深入解析

相关文章

  • 2017-05-28VC实现ODBC数据库操作实例解析
  • 2017-05-28深入学习C++中的函数概念
  • 2017-05-28C和指针小结(推荐)
  • 2017-05-28C++封装IATHOOK类实例
  • 2017-05-28C语言实现矩阵翻转(上下翻转、左右翻转)
  • 2017-05-28Cocos2d-x 3.x入门教程(二):Node节点类
  • 2017-05-28使用pthread库实现openssl多线程ssl服务端和客户端
  • 2017-05-28linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
  • 2017-05-28与ASCII码相关的C语言字符串操作函数
  • 2017-05-28VC++实现文件与应用程序关联的方法(注册表修改)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++实现类似延时停顿的打字效果
    • C++中 STL list详解及简单实例
    • C++改变编程入口为main函数
    • 浅谈C++对象组合
    • c语言二进制数按位输出示例
    • C++ MD5的源码实例详解
    • C语言 strcpy和memcpy区别详细介绍
    • 详解C++中的指针、数组指针与函数指针
    • C语言实现socket简单通信实例
    • Prim(普里姆)算法求最小生成树的思想及C语言实例讲解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有