[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. [面试题总结及扩展知识]HTTP协议返回状态码的问题

    经常在网页中看到一些错误的返回信息,见一个查一个已经累感不爱,在2014年腾讯笔试题中也见到一道这样的问题,所以现在来总结一下: 腾讯2014面试题: 答案选B 附带一些http协议的错误代码: 当服 ...

  2. 2015.9.11模拟赛 codevs4162 bzoj1774【无双大王】

    题目描述 Description 无双大王hzwer扫清六合,席卷八荒,万姓倾心,四方仰德. hzwer拥有一片领土,其中有n个城市和m条双向道路.他规定每个人在领土上行走都要交过路费,同时进城也要交 ...

  3. ACM2055_ctype.h_cctype

    #include<iostream> int main() { using namespace std; int y,count; char x; cin>>count; wh ...

  4. 单网卡多IP导致的socket connect 10060超时错误

    问题: 接管别人代码时遗留的一个bug,在win7下,给一个网卡设置多个ip时,发现无法连接上服务器了.XP下就不会,这多个ip为192.168.1.127,172.1.1.13,10.0.0.1. ...

  5. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  6. lesson6:jmeter和badboy配合使用

    由于jmeter不支持脚本的录制,只能手动设置,在某些集成型的压力测试时,使用不是很方便,这时可以和badboy一起配合使用,badboy支持网页操作的录制功能,并能把录制的操作导出为jmeter的脚 ...

  7. 【80端口占用】win7下80端口被(Pid=4)占用的解决方法

    亲测可用 通过cmd命令查询占用进程的pid netstat -ano 如果要是tomcat等一般程序占用了端口,一般pid比较大,直接找到相应的pid结束掉进程就行啦. 但是如果pid是4,代表sy ...

  8. Android编程之ActivityManager: Segmentation fault

    今天运行代码时,出现了一个不能运行的故障问题:ActivityManager: Segmentation fault 是的,这个原因网上有诸多解释:包名不能是中文或者非法字符,或者重启新的avd来解决 ...

  9. SMO(Sequential Minimal Optimization) 伪代码(注释)

    Algorithm: Simplified SMO 这个版本是简化版的,并没有采用启发式选择,但是比较容易理解. 输入: C: 调和系数 tol: 容差 (tolerance) max passes: ...

  10. IOS成长之路-Nsstring中搜索方法rangeOfString

    NSString *str1 = @"can you \n speak English"; NSString *str = @"\n"; //在str1这个字符 ...