[ISO C11 Clause 3]
对象(object):
执行环境中数据存储的一块区域,它的内容可以用来表示值。
-注释:对象可以具有特定的类型。
--
值(value):
确定类型的对象的内容的确切含义。
--
访问(access):
读取或修改一个对象的值。
-注释1:如果只适用其中一种含义,则直接用“读取”或“修改”。
-注释2:“修改”包含新值和先前存储的旧的值相同的情况。
-注释3:未被求值的表达式不访问对象。
--
行为(behavior):
外部的表现或动作。
--
未定义行为(undefined behavior):
通过使用不可移植、错误的程序构造或错误的数据导致的ISO C没有任何要求的行为。
--
未确定行为(unspecified behavior):
使用一个未确定值,或其它ISO C提供超过一种可能但在任何情形下不要求确定的行为。
--
未确定值(unspecified value):
适当类型的有效的值,ISO C在任何情形下不要求确定值的可能选择。
--
由实现定义的行为(implementation-defined behavior):
未确定行为,由每个实现的文档选择决定。

由实现定义的值(implementation-defined value):
未确定的值,由每个实现的文档选择决定。
--
位(bit):
执行环境中数据存储的单元,至少能保存具有两个值之一的对象。
-注释:对象中的每个位不需要保证可以表达为地址。
--
字节(byte):
可寻址的数据存储单元,至少能保存基本执行字符集的任何一个成员。
-注释1:对象的每个字节的地址具有唯一表达。
-注释2:一个字节由连续的位序列组成,它的数量由实现定义(implementation-defined)。最低有效位称为low-order bit;最高有效位称为high-order bit。
--
字符(character):
<抽象>一个元素用来组织、控制或表示数据的集合中的成员。
----
单字节字符(single-byte character):
一个字节的位表示。
----
多字节字符(multibyte character):
一个或多个字节的序列,表示一个源或执行环境中的扩展字符集的成员。
----
宽字符(wide character):
可以被类型wchar_t表示它的值的字符,兼容于在现有区域(locale)的任何字符的表示。
----
约束(constraint):
说明语言的要素时在语法(syntactic)或语义(semantic)上的限制。
----
运行时约束(runtime-constraint):
调用一个库函数时对程序的要求。

1
ISO C中,“应当(shall)”表示对实现或程序的要求;“不应当(shall not)”表示禁止。
2
如果约束或运行时约束以外的一个“应当”或“不应当”要求被违反,行为未定义。ISO C中的未定义行为包括其它直接的“未定义行为”表述或显式的行为定义的缺失。这三点的强调语气没有区别,都表示“行为未定义”。
==
5.1.2.3 程序执行
1 ISO C描述的抽象机(abstract machine)行为中的程序语义叙述和优化无关。
2 访问一个volatile对象,修改一个对象,修改一个文件,调用一个存在以上操作的函数都是副作用。副作用改变执行环境的状态。表达式的求值包括值的计算和副作用。左值(lvalue)表达式的计算包括决定被指示对象的同一性。
3 前序(sequenced before)是单线程程序中的求值之间的一个反对称、传递的二元关系,它决定求值存在一个偏序(partial order)。给定两个求值A和B,若A前序于B,则A应当在B之前执行。(对应地,若B前序于A,则A后序(sequenced after)于B。)若A既不前序也不后序于B,则A和B是非序列的(unsequenced)。A和B是未决定序列的(indeterminately sequenced),当A前序于B或B前序于A,但不确定是哪一种情况。13)存在于A和B之间的序列点蕴含(implies)和A关联的每个值的计算和副作用前序于和B关联的每个值的计算和副作用。(一份关于序列点的总结见附录C。)
4 在抽象机中,所有表达式以指定的语义被求值。一个实际实现不需要求值每一个部分,若它可以推断(deduce)这个值没有被使用且没有必要产生副作用(包括任何通过调用函数或访问volatile对象的情形)。
13)非序列求值可以交错进行(interleave)。未决定序列求值不能交错,但可以任意顺序进行。

Some General concepts in ISO C的更多相关文章

  1. RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

    前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...

  2. Introduction to Multi-Threaded, Multi-Core and Parallel Programming concepts

    https://katyscode.wordpress.com/2013/05/17/introduction-to-multi-threaded-multi-core-and-parallel-pr ...

  3. C++ Core Guidelines

    C++ Core Guidelines September 9, 2015 Editors: Bjarne Stroustrup Herb Sutter This document is a very ...

  4. matplotlib python高级绘图库 一周总结

    matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...

  5. httpcomponents-client-4.4.x

    Chapter 1. Fundamentals Prev     Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...

  6. httpcomponents-client-ga(4.5)

    http://hc.apache.org/httpcomponents-client-ga/tutorial/html/   Chapter 1. Fundamentals Prev     Next ...

  7. httpcomponents-client-4.3.x DOC

    Chapter 1. Fundamentals Prev     Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...

  8. 译文 - Recommender Systems: Issues, Challenges, and Research Opportunities

    REF: 原文 Recommender Systems: Issues, Challenges, and Research Opportunities Shah Khusro, Zafar Ali a ...

  9. [转]Peer-to-Peer Communication Across Network Address Translators

    Peer-to-Peer Communication Across Network Address Translators Bryan Ford Massachusetts Institute of ...

随机推荐

  1. socket编程2

    package tcp; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOExceptio ...

  2. css中margin:0 auto没作用

    很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题!margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应!其 ...

  3. hdu 4277 USACO ORZ(dfs+剪枝)

    Problem Description Like everyone, cows enjoy variety. Their current fancy is new shapes for pasture ...

  4. lesson6:java线程中断

    正常的情况下,业务系统都不会去中断它的线程,但是由于一些特殊情况的发生,线程已经不能正常结束了,并且此类线程已经影响到业务系统提供服务的能力,如果系统设计的健壮,便会通过监控线程去主动的中断此类线程. ...

  5. Python顺序与range和random

    range([start,] stop[, step]) start是开始,stop是停下,step是步长. >>> range(10) range(0, 10) >>& ...

  6. 在Linux系统中如何把文件拷贝到U盘

    Linux下把所有的都当成文件处理,如果在linux系统下需要拷贝文件,哪么你需要先把U盘挂载到系统中的某一个位置,然后再使用cp命令完成拷贝.   工具/原料 Linux操作系统一台 U盘一枚 方法 ...

  7. 自定义控件 进度条 ProgressBar-2

    使用 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:bqt ...

  8. \r \r\n \t 的区别

    http://www.360doc.com/content/12/0530/15/16538_214756101.shtml \n 软回车:       在Windows 中表示换行且回到下一行的最开 ...

  9. 【转】使用 Eclipse 调试 Java 程序的 10 个技巧

    你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...

  10. centos上如何安装git

    安装依赖包 1.yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel 2.yum install au ...