2009年1月25日星期日

C++三大基础之复习

一、表达式与基本语句

1、顺序:
如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。
例如:
word = (high <<>2、复合表达式
允许复合表达式存在的理由是:(1)书写简洁;(2)可以提高编译效率。
要求:
(1)不要编写太复杂或者多用途的复合表达式。
(2)不要把程序中的复合表达式与“真正的数学表达式”混淆。
例如:
if (a <>3、if语句

1)布尔逻辑语句
定义布尔变量名字为flag
if (flag) // 表示flag为真
if (!flag) // 表示flag为假
2)整形变量与零值比较
if (value == 0)
if (value != 0) //不要仿布尔逻辑语句。
3)浮点变量与零值比较
无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。 假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较 转化为 if ((x>=-EPSINON) && (x<=EPSINON)) 其中EPSINON是允许的误差(即精度)。 4)指针变量与零值比较
应当将指针变量用“==”或“!=”与NULL比较。
假设指针变量的名字为p,它与零值比较的标准if语句如下:
if (p == NULL) // p与NULL显式比较,强调p是指针变量
if (p != NULL)
5)补充
(1)可能会看到 if (NULL == p) 这样古怪的格式。不是程序写错了,是程序员为了防止将 if (p == NULL) 误写成 if (p = NULL),而有意把p和NULL颠倒。编译器认为 if (p = NULL) 是合法的,但是会指出 if (NULL = p)是错误的,因为NULL不能被赋值。
(2)标准风格:
if (condition)
{
return x;
}
else
{
return y;
}
或者改写成更加简练的
return (condition ? x : y);
4、循环语句
1)在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。——效率
2)如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。如果N非常小,两者效率差别并不明显。

3)不可在for 循环体内修改循环变量,防止for 循环失去控制。for语句的循环控制变量的取值采用“半开半闭区间”写法。即x值属于半开半闭区间“[0,N)"。
5、switch语句
switch语句的基本格式是:
switch (variable)
{
case value1 : …
break;
case value2 : …
break;

default : …
break;
}
不要忘记break;不要忘记default分支。
6、goto语句
goto 语句至少有一处可显神通,它能从多重循环体中咻地一下子跳到外面,用不着写很多次的break语句。
二、变量与常量


三、函数设计