摘要: 1. 位域的定义 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个... 阅读全文
posted @ 2010-10-09 00:36 jeff_nie 阅读(2129) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是结构对齐和对齐的作用现代计算机中内存空间都是按照byte(字节)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是结构对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些... 阅读全文
posted @ 2010-10-07 23:19 jeff_nie 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 先来看看这两个概念是如何定义的:副作用(side effect)是对数据对象或文件的修改。顺序点(sequence point)是程序执行中的一点,在该点处,所有的副作用都在进入下一步前被计算。在C中,语句后面的分号标志了一个顺序点。任何完整表达式(full expression)运算结束的那个时间点也是顺序点。所谓完整表达式,就是说这个表达式不是子表达式。而所谓的子表达式,则是指表达式中的表达式... 阅读全文
posted @ 2010-10-06 23:28 jeff_nie 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 下面这张表全了: 阅读全文
posted @ 2010-10-06 20:52 jeff_nie 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 位运算符都是对二进制位操作的运算符,所以它只能对整形(包括字符型)数据运算,运算前也需转换为二进制。移位原则,移出的位数全部丢弃,移出的空位补入的数与左移还是右移有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原数的符号位)。在移位运算符前,先理解下带符号位的表达方式... 阅读全文
posted @ 2010-10-06 20:49 jeff_nie 阅读(1107) 评论(0) 推荐(0) 编辑
摘要: 说到“左右法则”无一例外的都先搬出C标准中的原文:The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should... 阅读全文
posted @ 2010-10-05 19:55 jeff_nie 阅读(295) 评论(3) 推荐(0) 编辑
摘要: 函数sscanf与scanf功能相同(更多的是将它划为字符串分割函数),对于scanf,是从标准流输入读取字符,对于sscanf则是从字符串中读取字符,函数原型为: int sscanf (char *s, const char * format, ...); 返回值为返回参数数目,失败则返回-1 第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]... 阅读全文
posted @ 2010-10-04 23:43 jeff_nie 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 1. 不要对浮点数使用该运算符,那将是无效的。2. 如果第一个操作数为负数,那么得到的模也为负数;如果第一个操作数为正数,那么得到的模也为正数。3. 取模公式:a % b == a - (a/b) * b——以上来自《C Primer Plus》第五章 运算符、表达式和语句 阅读全文
posted @ 2010-10-04 22:18 jeff_nie 阅读(900) 评论(0) 推荐(0) 编辑