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 ...
随机推荐
- CCF 送货 + 欧拉路模板
#include <bits/stdc++.h> using namespace std; stack<int> st; vector<]; ][]; ],cp[]; i ...
- HDU-2571命运
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机 ...
- Linux下创建、查看、提取和修改静态库(*.a)
先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件). 废话少说,下面直接 ...
- Junit 学习
一. 断言核心方法 示例代码: package com.test; import org.junit.Assert; import org.junit.Test; /** * @Title: test ...
- MYSQL存储过程,清除指前缀的定表名的数据
MYSQL存储过程,清除指前缀的定表名的数据 DELIMITER $$ DROP PROCEDURE IF EXISTS `drop_table`$$ ),)) BEGIN ) DEFAULT NUL ...
- XAMPP的MYSQL无法启动
昨天用各种方式试验MYSQL的数据库备份与恢复操作,恢复过程中,MYSQL就无法启动了. 提示如下: 22:59:43 [mysql] Attempting to start MySQL app... ...
- HTML的表格玩法
HTML的表格玩法 HTML也是可已展示表格的,大体结构如下 <!DOCTYPE html> <html lang="en"> <head> & ...
- volatile-java关键字
volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优化.比如如下程序: XBYTE[2]=0x55; XBYTE[2 ...
- Web Service那点事
出现 如今基于浏览器的client应用程序越来越流行,而从开发角度来看,一方面是client浏览器的安装配置不再须要我们再去花费非常大的精力.还有一方林则是由于client和server之间通信的问题 ...
- LeetCode::Remove Duplicates from Sorted List II [具体分析]
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...