表达式和基本语句
①if语句 (分支:单分支、双分支、多分支)
if 语句是C 语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if语句;
布尔变量与零值比较、整型变量与零值比较、浮点变量与零值比较、指针变量与零值比较
②while,for语句
C++/C 循环语句中,for 语句使用频率最高,while语句其次,do语句很少用。
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数;
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面;
③switch开关语句
switch语句可以产生具有多个分支的控制流程。
它的格式是:
switch(控制表达式)
{
case常量表达式:语句列表
case常量表达式:语句列表
...
default:语句列表
}
每个case语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠);
不要忘记最后那个default分支。即使程序真的不需要default处理,也应该保留语句 default : break;这样做并非多此一举,而是为了防止别人误以为你忘了default处理。
④goto语句(流程转向)
由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句.
位运算及其运算符
①按位与──& (1)格式:x&y (2)规则:对应位均为1时才为1
(3)主要用途:取(或保留)1个数的某(些)位,其余各位置0。
②按位或──| (1)格式:x|y (2)规则:对应位均为0时才为0,否则为1
(3)主要用途:将1个数的某(些)位置1,其余各位不变。
③按位异或──^
(1)格式:x^y
(2)规则:对应位相同时为0,不同时为1:3^9=10。
(3)主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。
④按位取反──~
(1)格式:~x
(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1:在IBM-PC机中,~0=0xffff,~9=0xfff6。
(3)主要用途:间接地构造一个数,以增强程序的可移植性。
⑤按位左移──<<
(1)格式:x<<位数
(2)规则:使操作数的各位左移,低位补0,高位溢出:5<<2=20。
⑥按位右移──>>
(1)格式:x>>位数
(2)规则:使操作数的各位右移,移出的低位舍弃;高位:
1)对无符号数和有符号中的正数,补0;
2)有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。例如,20 >> 2=5。
说明:
(1)x、y和“位数”等操作数,都只能是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。
(2)参与运算时,操作数x和y,都必须首先转换成二进制形式,然后再执行相应的按位运算。
(3)实现&、|、^运算主要用途的方法
1)构造1个整数:该数在要取(或保留)的位、或要置1的位、或要翻转的位上为1,其余均为0。
2)进行按位与、或按位或、或按位异或操作。
(4)实现按位取反主要用途的方法
1)求~0,间接地构造一个全1的数;
2)按需要进行左移或右移操作,构造出所需要的数。
复合赋值运算符
除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符:&=、|+、^=、<<=、>>=
不同长度数据间的位运算──低字节对齐,短数的高字节按最高位补位:
(1)对无符号数和有符号中的正数,补0;
(2)有符号数中的负数,补1。
位段的概念与定义 所谓位段类型,是一种特殊的结构类型,其所有成员均以二进制位为单位定义长度,并称成员为位段。
说明
(1)因为位段类型是一种结构类型,所以位段类型和位段变量的定义,以及对位段(即位段类型中的成员)的引用,均与结构类型和结构变量一样。
(2)对位段赋值时,要注意取置范围。一般地说,长度为n的位段,其取值范围是:0~(2n-1)。
(3)使用长度为0的无名位段,可使其后续位段从下1个字节开始存储。
新闻热点
疑难解答