C89标准中文版pdfpdf

所需积分/C币:27 2015-05-03 16:38:33 6.64MB PDF

hello world, hello hello
6.3.11按位加算符………… …(38) 6.3.12按位或算符 (38) 6.3.13逻辑与算符…… ……(38) 6.3.14逻辑或算符… ………………………………(38) 6.3.15条件算符…………………………………………………(39) 6.3.16赋值算符…… 鲁。中申 …(40) 6.3.1?逗号算符 (41) 6.4常盘表达式 ……………………………………s……(41) 6.5声明… ·4冒■非串↓看● ·●↓●自备号·卓聊聊D鲁晋暑备··鲁●q音自●命·鲁着● ………(42) 6.5.1存储类区分符 ●卷鲁 订日·q·晋看嗒“血q唱b鲁看音·中昏昏看·者。唱当合鲁 ………………(43) 6.5.2类型区分符… 甲看看自●。●中 …………(43) 6.5.3类型限定词 鲁····◆··p自··鲁D鲁即辛各·卓 (48) 6.5.4声明符… ●4●···聊●自P鲁日·卓q驴身·自4qq鲁··即●卓4·●●即pp自4甲谭省 (49) 6.5.5类型名 …(52) 5.6类型定义… ………(53) 6.5.7初始化…… 司·鲁··自● ………(54) 6.6语句……… 香省普聊一p看甲甲自甲『口 单t◆↓甲甲 (57) 6.6.1带标号语句 ……4(57) 6.6.2复合语句或块 b●●●司看D音鲁●鲁·■●鲁4晕 (58) 6.6.3表达式语句与空语句 b咖申●p●看看●;D●P司 58) 6.6.4选择语句 ………………………(59 6.6.5循环语句 60) 跳转语句 ●●管』多·看· (60) 6.7外部定义…… ·4‘4··4·4.·····“···· ……(62) 6.7.1函数定义 7.2外部对象定义 自自古d·qD·●·●日晶·●p4山‘4。号聊号自鲁命·省··鲁看‘· (64) 6.8预处理指示… ………(65) 6.8.1条件并入… ………………(66) 6.8.2源文卷并入 ……(67) 6.8.3宏替换 鲁·●号 ………(68) 6.8.4行控制 ·4日命·‘“·甲q日目d山“q旷甲;母司◆q吾自·●··曾·号 ………………(71) 6.8.5出错处理指示…… (72) 6.8.6编译指示· (72) 6.8.7空指示…………………………" …(72) 6.8.8预定义的宏名… (72) 6.9语言的发展趋向………………… ……………………………(72) 6.9.1外部名 晶··.··鲁省▲4聊申自命命即日日.··sp自q是哈●◆驴导自甲自·●号音 (72) 6.9.2字符转义序列 bps■咖◆看t (72) 6.9.3存储类区分符………… 4會『看看q争 鲁貢看看 (72) 6.9.4函数声明 491 (73) 6.9.5函数定义 (73) 6.9.6数组形参……………………………… 库 7.1引言 ……………………(73) 7.1.1术语定义…………… 7.1.2标准前导文卷 (73) 1.3保留的标识符∴ (74) 7.1.4出错处理程序库前导文卷<erno.h>… ………………(74) 7.1.5限定值前导文卷<f!oath>和< limits,h> (74) 7.1.6公用完义库前导文卷< stddef.h>…………………………………………………(74) 库函数的使用 由PqPP甲甲D中事DP鲁.● (75 7.2诊断程序库前导文卷< assert. h>…………………………………………(76) 7.2.1程序的诊断 …………(76) 7.3字符处理程序库前导文卷< ctype,h> (7 31字符测试函数……………………………………………………………(77 大小写字符映射函数……… ·自身辛卩非4鼻音鲁着卡鲁P身鲁 ……………(79) 7.4本地化程序库前导文卷< locale.h> …(79) 7.4.1地域环境控制 ●身D血qq罪 即 ………………(80) 7.4.2询问数值格式约定 (81) 7.5数学程序库前导文卷<math.h>……………… (83) 7.5.1出错条件的处理………… (83) 7.5.2三角函数… (83) 7.5.3双曲函数 …………(84) 7.5.4指数和对数函数 …………………………………(85) 7.5.5幂函数…………………………………………… (86) 7.5.6最近整数、绝对值和余数函数…… …………(87) 7.6菲局部跳转库前导文卷< stump.h> ……………………………(87) 7.6,1保存调用环境 q·号·鲁音自量··鲁昏●··冒ψ●《4罪要罗■■即■自··↓·ψ鲁◆鲁鲁看省甲甲甲。聊聊即自 88) 7.6.2恢复调用环境 (88) 7信号处理程序库前导文卷< signal.h> ·■■,·伽●·●··E口暴.●罪··.●■■ (88) 规定信号处理…… …………………………………(89) 2发送信号 90) 7.8变长实参库前导文卷< stdarg.h>… 电4◆司■■司 ◆咖··◆卓··自4q罪节甲单■口·非看命者●4q·◆ (90) 访间变长实参表的宏 (90) 7.9输入输出程序库前导文卷<stdo.hi (92) 7.9.1引言 (92 7,9.2流 …………………………………(93) 7.9.3文卷 ………………………………………………………………(93) 7.9.4文卷操作 甲.●●昏 94) 文卷访问函数 (95) 7.9.6烙式化输入输出函数… (97) 7.9.7字符输入输出函数……… (105) 7.9.8直接输入输出函数……………………………………………(109) 7.9.9文卷定位函数 …………(108) 7.9.10出错处理函数 (110) 7.10通用实用程序库前导文卷< Stdlib. h> 7.10.1串转换函数……… ………………………(111) 7.10.2伪随机序列生成函数… s(114) .10.3存储管理函数… (114) 7.10.4与环境通信… ……………(115) 7.10.5查找与排序实用程序… ······4············自→命·4·‘ …(117) 7.10.6整型算术函数… ss………………s"s(18) 7.10.7多字节字符函数 ………………………………………(18) 710.8多字节串函数………………120) 7.11串处理程序库前导文卷< string.h> (120) 7.11.1串函数的约定… a·ss"s…ss…(120) 7.11.2复写类函数 ………………………(120) 7.11.3串接函数… 命4合●p号鲁咖鲁 ……………………………(121) 7.11.4比较函数……………… ●即.·鲁晶如命自看哥哥罪 (122) 7.11.5查找函数 ……………………………………………………(123) 7.11.6其他函数 …(126) 7.12日期与时间函数库前导文卷< time. h>… 即·鲁·鲁●音↓●●·●@日鲁卓·省自卧看·中导鲁·甲曾·q带P目非目 (126) 7.12.1时间的分量 ………(126) 7.12.2时间操作函数……… (127) 7.12.3时间转换函数… (128) 7.13库的发展趋向……… ………(131) 7.13.1出错处理程序库前导文卷< errno. h>… ………………(131) 7.13.2字符处理程序库前导文卷< ctype.h>…… …………(131) 7.13.3本地化程序库前导文卷< locale. h>…… …………(131) 7.134数学程序库前导文卷< math. h>… 7.13.5信号处理程序库前导文卷< signal,h>………………………"…………"(131) 7.13.6输入输出程序库前导文卷< stdio.h> (131) 7.13.7通用实用程序库前导文卷< stdlib. h>… ……………(131) 7.13.8串处理程序库前导文卷< string. h> ………………………(131) 附录A语言语法汇总(参考件) (132) A1词法部分文法……… …(132) A2短语结构文法 鲁·自D甲◆。单p●吾●●4 命·.·;·· ………(136) A3预处理指示 ………………………………………(141) A4词法部分文法(英文 4t合·』···············:· (142) A5短语结构文法(英文) 身··自··量···聊音自●卡备看自自奇d看b喜4自食·如會·■ (146) A6预处理指示(英文)…… ·曾甲“· (151) 附录B序点(参考件)… ·D口·看最D看自那鲁● …………(152) 附录C库汇总(参考件) ·····‘44·备·‘4······4··········°··· ……………(153) C!出错处理程序库前导文卷<crno,h> ………………(153) C2公用定义库前导文卷< stddef.h>… ·银甲量是·看鲁·P●·會 (153) C3诊断程序库前导文卷< assert, h>… ●*a香··q日.◆◆自合···a日···自···自_b···· (153) C4字符处理程序库前导文卷< cty pe. h>… 地域特性程序库前导文卷< locale. h ●自鲁售↓甲备p ……………………………(153) C6数学程序库前导文卷<math.h (154) C7非局部跳转库前导文卷< set jmp.h> 命一备●●看 (154) C8信号处理程序库前导文卷< signal. h> 号点A山自鲁 (154) C9变长实参库前导文卷< stdarg.h C10输入输出程序库前导文卷< stdio.h>…… ▲b4鲁●D (155) C11通用实用程序库前导文卷< stdlib.h>…… 6 C12串处理程序库前导文卷< string. h>……………………s……………………(157) C13日期与时间函数库前导文卷<imne.h 章甲自阜曾·鲁聊卩·助谭4 …·(158) 附录D实现规定的限定值(参考件)………………………………………(158) 附录E常见的告诫消息(参考件)…………………………………………………………………(160) 附录F与可移植性有关的问题(参考件)…… ………(160) F1未规定的行为 …(161) F2未定义的行为 ………………………………………(161) F3实现定义的行为 ……"…………s""……"……(164) F4地域特定的行为 …(167 F5常见的扩展…………………(167) 附录G索引(参考件)… ●@鲁音自省罪罪● ………(168) 中华人民共和国国家标准 GBT15272-94 程序设计语言C Iso/EC9899-1990 Programming languages-C 本标准等同采用了国际标准IS/EC9899-1990《程序设计语言C》 0引言 随着新设备和扩展字符集的引入,标准中可能会增加新的特征。在语言和库两章中的有关条文对实 现者和程序员使用尽管本身是合法的,但可能与未来增加的内容相冲突的持征给出了告诫。 有一些特征属于将还新废充的,这意味着在未来的标准版本中可能会撒消这些特征。本标准文本 中仍然保留它们的原因是这些特征已使用得很广泛,但不鼓励在新的实现中使用这些与实现有关的特 征,或在新的程序中使用这些语言特征(见6.9条)或库特征(见7.13条) 本标准文本分为下列四个主要部分 引言和基本元素; 一翻译与执行C程序的环境的特性; 语言的语法、约束与语义; 库设施。 在有些条文中:给出了示例以说明所描述的构件的可能形式;加注以强调在相应条文或标准的其他 地点所描述的规则的作用;涉及其他相关条文时绘出了引用。附录部分总结了包含在标准中的信息。引 言示例、注、引用和附录均不属于标准的组成部分 第6章语言是从“ The C Reference manual”中派生的 第7章库是基于C用户协会1984年的标准(1984/usr/ group standard) 主题内容与适用范围 本标准规定了用程序设计语言C书写的程序的形式及其解释。 注:设计本标准的目的在于促进C程序在各个数据处理系统之间的可移植性。本标准的主要使用对象是实现者和 程序员。与本标准相关的一个基本文件解释了制定本标准的技术委员会的许多决策。 本标准规定了 C程序的表示 C语言的语法和约束; 解释C程序的语义规则; 由C程序处理的输入数据的表示; 由C程序产生的输出数据的表示; 对遵从标准的C实现的限制和限定值 本标准对以下内容未作规定 为数据处理系统使用而对C程序进行变换的机制; 为数据处理系统使用而调用C程序的机制 国家技术监督局1994-12-07批准 1995-08-01实施 GB/T15272-94 为C程序使用而对输入数据进行变换的机制; 在C程序产生输出数据后对其进行变换的机制; 将超出任何特定数据处理系统或特殊处理机容量的C程序及其数据的长度与复杂性 —对能够支持一个遵从标准的实现的全部最低要求 2引用标准 GB1988信息处理信息交换用七位编码字符集 GB5271数据处理词汇 GB12406表示货币和资金的代码 ANSI/EEE754二进制浮点运算2 3定义和约定 本标准中,动词“应解释为对实现或程序应提出的要求。反之,动词“不应”解释为应禁止 下列定义适用于本标准在本标准中显式定义了的术语,不能被假定为隐含在其他地方定义的类似 术语。在本标准中未定义的术语应按GB5271解释 3.1对齐 alignment 指特定类型对象应放置在存储区边界的要求,该边界的地址是字节地址的特定倍数 3.2实参 argument 指函数调用表达式中由括号括起来并以逗号分隔的表中的表达式,或类似函数的宏调用中由括号 括起来并以逗号分隔的表中的一系列预处理单词。也称“实在参数” 3.3(二进〕位bit 执行环境中的数据存储单位,它应大到足以容纳一个可能具有两种值之一的对象。不要求能表达 个对象中每个各别位的地址 3.4字节byte 数据存储单位,足够大以容纳执行环境中基本字符集的任何…个成员。应能唯一表达一个对象中每 个各别字节的地址。字节由一系列相邻接的二进位组成字节中二进位的数目由实现定义。字节的最低 有效二进位称为低位,最高有效二进位称为高位。 3.5字符 character 个字节内能容纳的二进位表示。源环境和执行环境的基本字符集中的每个成员的表示都应能被 容纳在一个字节内。 3.6约束 constraint 进一步解释语言元素评注的语法或语义限制。 3.7诊断消息 diagnostic message 实现输出消息子集中的一类消息,是实现定义的 3.8提前引用的条文 forward reference 对标准中包含与当前条文相关信息的后续条文的提前引用 3.9实现 implementation 个特定的软件集合,它运行在一个受到特殊控制任选的特定翻译环境,为一个特定执行环境实现 采用说明 1GB5271l等同采用ISO2382,在本标准第3章出现。 2]ANSI/EEE754在本标准第5章出现 GB/T15272—94 程序的翻译,并支持函数在该执行环境中的执行。 3.10实现定义的行为 implementation-defined behavior 指对依赖于实现特性的、且是正确的程序构件和数据的行为。每个实现对这些行为均应用文档说 明 3.11实现规定的限定值 implementation limits 实现对程序所规定的限定值。 3.12地域特定的行为 locale-specific behavior 指依賴于地域、国别、文化和语言习惯的行为。每个实现对这些行为均应用文档说明。 3.13多字节字符 multibyte character 由一个或多个字节构成的序列,表示源环境或执行环境中扩展字符集的一个成员扩展字符集是基 本字符集的超集。 3.14对象 object 执行环境中的数据存储区,其內容表示值除位段以外,对象由一个或多个邻接的字节组成对象中 的字节奴、次序、编码或者显式规定或者由实现定义。当被引用时,对象可被解释为具有特殊类型(见 6.2.2.1条)。 3.15形参 parameter 种对象是声明为具有入口值的函数声明或函数定义的一部分或是紧跟在类似函数的宏定义的 宏名之后,由括号括起来并以逗号分隔的表中的标识符。也称“形式参数”。 3.16未定义的行为 undefined behavior 指当使用了一个不可移植的或是错误的程序构件,或错误的数据,或无法确定值的对象时的行为 而标准并未对这些行为加以规定。所允许的对未定义的行为的处理包括:尽管可能出现不可预测的结 果,也完全忽略该情况;在翻译或程序执行时按环境文档规定的特性处理(不保证出现诊断消息);终止 翻译或执行(保证出现诊断消息〕 若违反了在约束条文以外出现的“应”或“不应”要求则该行为是未定义的其他未定义的行为在本 标准文本中用文字“未定义的行为”,或由省略任何显式的行为定义来指示对这三种情况并不强调任何 区别它们都描述“没有定义的行为”。 3.17未规定的行为 unspecified behavior 指标准未提出任何要求的且是正确的序构件或数据的行为 示例 a.函数实参求值的频序是一种未规定的行为 b整数溢出时的行为是一种未定义的行为 有符号整数右移时高位如何传递是一种实现定义的行为 d.对除26个小写英文字母外的字符,ower函数是否返回真值是一种地域特定的行为 提前引用的条文:逐位移位算符(6.3.7条)表达式(6.3条),函数调用(6.3.2.2条),函数 islower (7.3.1.6条),本地化程序库前导文卷(7.4条) 4一致性 堙M(然序应当只使用本标准中规定了的那些语言和库特征,它不应产生依赖于 未规定的、或未定义的、或实现所定义的行为的输出,也不应超出任何实现规定的最低限定值。 (所擦的)现有两种形式:宿主型和独立型。一个到楼M实理应当接受任何严格遵从的 程序-个到楼从笑把应当接受任何严将遵从的程序,该程序中对在本标准第7章“库”中所规定 了的特征的使与标准前导文卷otb)、 limits. h)、 stdarg. h)和sdeh)-致。一个遵从实现可 以有扩展(包括附加的库函数),只要这些扩展不改变格遵从程序的任何行为。 GB/T15272-94 从摆庐是指遵从实现可接受的程序 注:①这意味着一个遵从实现不得保留除本标准中显式规定保留的标识符以外的任何标识符 ②预期严格遵从程序在各遵从实现之间有最大限度的可移植性。遵从程序可能会依赖于遵从实现的某些非可 移植性特征 个实现应附有定义所有实现定义特征及其扩充的文档。 提前引用的条文:限定值前导文卷foah)和( limits. h)(7.1.5条),变长实参库前导文卷 stdarg h〉(7.8条),公用定义库前导文卷 stddef. h}(7.1.6条)。 5环境 实现分别在两个数据处理环境中翻译C源文卷并执行C程序,在本标准中分别称它们为环 和行环楚。它们的特性定义、并约束按照遵从实现的语法和语义规则所构造的遵从C程序的执行结 果 提前引用的条文:在第5章“环境”中,仅给出了许多可能的提前引用的条文中的一小部分 5.1概念化模型 5.1.1翻译环境 5.1.1.1程序结构 一个C程序并不一定要全都在同一时刻翻译。程序文本存放在本标准中称为源丈娄的单位中 个源文卷连同经预处理指示# include并入的所有前导文卷和源文卷,扣除由条件并入预处理指示所跳 过的源程序行后,称为一个朝译位。以前翻译过的翻译单位可单独保存或存在库中。一个程序的各个 翻译单位之间通过例如对标识符具有外部链接的函数的调用,对标识符具有外部链接的对象的操作或 对数据文卷的操作等手段进行通信。翻译单位可以先分别翻译,然后链接产生一个可执行的程序 提前引用的条文:条件并入(6.8.1条),标识符的链接(6.1.22条),源文卷并入(6.82条) 5.1.1.2翻译阶段 翻译的话法规则之间的优先顺序由下列阶段规定 阶段1.若有必要,则将物理文卷字符映射到源字符集(对行尾指示符引入新行字符)。用相应的 单字符内部表示替换三联符序列。 阶段2.删除每个反斜线字符后紧跟一个新行字符的字符对,分割物理源程序行以构成逻辑源程 序行。不为空的源文卷应以一个新行字符结束,该新行字符前不应有紧接的反斜线字符 阶段3.将源文卷分解为预处理单词和一系列的白空类符(包括注释)。源文卷不应在不完整的预 处理单词或注释处结束。对每条注释都用一个空格字符替换。保留新行字符。对除新行外的不为空的 一系列白空类符的处理是保留还是用一个空格字符替换由实现定义 阶段4.执行预处理指示,展开宏调用。# include预处理指示将导致递归地从阶段1到阶段4处 理命名的前导文卷或源文卷。 阶段5.将第一个源字符集成员以及字符常量和串字面值中的转义序列转换为执行字符集中的 成员。 阶段6.串接邻接的字符串字面值单词和邻接的宽串字面值单词 阶段7.此时分隔单词的白空类符不再有意义。每个预处理单词都转换为一个单词。对如此得到 的单词进行语法分析和语义分析并加以翻译 阶段8.解决所有外部的对象引用和函数引用。链接有关的库成分以满足对未在当前翻译单位内 定义的对象和函数的外部引用。将所有这类翻泽程序的输出收集到一个程序映象中,该映象包含了在其 执行环境中执行时所需的信息。 注;①即使在实践中常常把几个阶段合并在一起实现必须去现为如闻这些阶段分离出现一样 ②如在6.1条中所描述的,将源文卷字符分解为预处理单词的过程是上下文相关的:作为例子,请参见在

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐