Some General concepts in ISO C
[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的更多相关文章
- RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)
前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...
- 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 ...
- C++ Core Guidelines
C++ Core Guidelines September 9, 2015 Editors: Bjarne Stroustrup Herb Sutter This document is a very ...
- matplotlib python高级绘图库 一周总结
matplotlib python高级绘图库 一周总结 官网 http://matplotlib.org/ 是一个python科学作图库,可以快速的生成很多非常专业的图表. 只要你掌握要领,画图将变得 ...
- httpcomponents-client-4.4.x
Chapter 1. Fundamentals Prev Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...
- httpcomponents-client-ga(4.5)
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/ Chapter 1. Fundamentals Prev Next ...
- httpcomponents-client-4.3.x DOC
Chapter 1. Fundamentals Prev Next Chapter 1. Fundamentals 1.1. Request execution The most essent ...
- 译文 - Recommender Systems: Issues, Challenges, and Research Opportunities
REF: 原文 Recommender Systems: Issues, Challenges, and Research Opportunities Shah Khusro, Zafar Ali a ...
- [转]Peer-to-Peer Communication Across Network Address Translators
Peer-to-Peer Communication Across Network Address Translators Bryan Ford Massachusetts Institute of ...
随机推荐
- 小记UNIX编程库调用.
更好的文章:http://www.cppblog.com/deane/articles/165216.html 静态库生成:(举例加法库) 1.编程源程序 add.h add.c 2.编译源程序,生成 ...
- memory_target not supported on this system
- JVM内存堆布局图解分析
JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢 ...
- sourceTree初识
GUI for git|SourceTree|入门基础 目录 SourceTree简介 SourceTree基本使用 SourceTree&Git部分名词解释 相关连接推荐 一.SourceT ...
- 面试al tx
阿里: 一面: 1:写代码,给三个数组abc,每个数组若干数字,判断一个数字在不在三个数组中.用的map解决. 2:例举知道的排序,写出归并排序代码. 3:剩下的都是小题目了:包括三次握手,tc ...
- iOS-网络编程(二)文件上传和断点离线下载
一. iOS中发送HTTP请求的方案 在iOS中,我们常用发送HTTP请求的方案有苹果原生(自带)NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用)NSUR ...
- (转)关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
首先是几个基本概念:1.屏幕尺寸Screen size即显示屏幕的实际大小,按照屏幕的对角线进行测量.为简单起见,Android把所有的屏幕大小分为四种尺寸:小,普通,大,超大(分别对应:small, ...
- cocoapods 的使用心得
一般我们下载的demo里边含有cocoapods 我们需要 在终端上输入命令,让他能够成功运行 步骤如下: 打开终端 cd 项目目录 直接拖动到终端里边就可以, 然后 pod install 如果 ...
- DevExpress之时间控件
dateEdit和timeEdit 基本属性 DisplayFormat.FormatString-------失去焦点是控件显示的格式,timeEdit用不上 EditMask----------- ...
- [React Testing] JSX error diffs -- expect-jsx library
When writing React component tests, it can be hard to decipher the error diffs of broken tests, sinc ...