zoukankan      html  css  js  c++  java
  • C++/C编程指南之基本语句

    运算符的优先级:一元运算符+ - *的优先级高于对应的二元运算符
    【规则 4-1-1】 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。
    复合表达式:如a = b = c = 0
    存在的理由1)书写简洁;2)可以提高编译效率。
    【规则 4-2-1】 不要编写太复杂的复合表达式。
    【规则 4-2-2】 不要有多用途的复合表达式。
    如: d = (a = b + c) + r ; 该表达式既求 a 值又求 d 值。
    【规则 4-2-3】 不要把程序中的复合表达式与“真正的数学表达式”混淆。
    如: if (a < b < c) // a < b < c 是数学表达式而不是程序表达式
    并不表示 :if ((a 
    而是成了令人费解的 if ( (a 
    if语句:以“与零值比较”为例
    布尔变量与零值比较
    【规则 4-3-1】 不可将布尔变量直接与 TRUE 、FALSE 或者1、0进行比较。
    如:假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:
    if (flag) // 表示 flag 为真
    if (!flag) // 表示 flag 为假
    其它的用法都属于不良风格, 例如:
    if (flag == TRUE)
    if (flag == 1 )
    if (flag == FALSE)
    if (flag == 0)
    整型变量与零值比较
    【规则 4-3-2】 应当将整型变量用“==”或“! =”直接与 0 比较。
    如:假设整型变量的名字为 value, 它与零值比较的标准 if 语句如下:
    if (value == 0)
    if (value != 0)
    不可模仿布尔变量的风格而写成
    if (value) // 会让人误解 value 是布尔变量
    if (!value)
    浮点变量与零值比较
    【规则 4-3-3】 不可将浮点变量用“==”或“!=”与任何数字比较。
    千万要留意, 无论是 float 还是 double 类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=” 与数字比较,应该设法转化成“>=”或“<=”形式。
    如:假设浮点变量的名字为 x,应当将
    if (x == 0.0) // 隐含错误的比较
    转化为
    if ((x>=-EPSINON) && (x<=EPSINON))
    其中 EPSINON 是允许的误差( 即精度)。
    指针变量与零值比较
    【规则 4-3-4】 应当将指针变量用”==”或”!=”与NULL比较。
    对if语句的补充说明
    if (NULL == p) 取代 if (p == NULL):防止将”==”误写成”=”,编译器又不报错
    if (condition) 改写成: if (condition) 或者: return (condition ? x : y);
    return x; {
    return y; return x;
    }
    else
    {
    return y;
    }
    循环语句的效率
    【建议 4-4-1】 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数。例如示例 4-4(b) 的效率比示例4-4(a) 的高。
    【建议 4-4-2】 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到 循环体的外面。如果 N 非常大,最好采用判断逻辑外提的写法,可以提高效率。如果 N 非常小,两者效率差别并不明显,不需将判断逻辑外提,因为程序更加简洁。
    for语句的循环控制变量
    【规则 4-5-1】 不可在 for 循环体内 修改循环变量,防止 for 循环失去控制。
    【建议 4-5-1】 建议 for 语句的循环控制变量的取值采用“半开半闭区间”写法。
    switch语句
    switch (variable)
    {
    case value1 : …
    break;
    case value2 : …
    break;
    default : …
    break;
    }
    【规则 4-6-1】 每个 case 语句的结尾不要忘了加 break,否则将导致多个分支重叠(除非有意使多个分支重叠)。
    【规则 4-6-2】不要忘记最后那个 default 分支。 即使程序真的不需要 default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了 防止别人误以为你忘default 处理。
  • 相关阅读:
    差分约束系统详解
    AC自动机详解
    KMP算法详解
    ST算法详解
    Trie详解
    欧拉路径详解
    树上差分详解
    LCA详解
    树链剖分详解
    树的直径详解
  • 原文地址:https://www.cnblogs.com/top5/p/1961722.html
Copyright © 2011-2022 走看看