4.1 运算符的优先级

 

规则:如果代码行中的运算符比较多,可用括号确定操作顺序。if((a|b)&&(a&c))

4.2   复合表达式

规则:不要编写太复杂的复合表达式

规则:不要有多用途的复合表达式   d = (a = b + c) + r ; 不可取。

规则:不要把程序中的复合表达式与真正的数学表达式相混淆

4.3  if语句

本节以“与零值比较”为例,展开分析。

1)布尔变量与零值比较

规则:不可将布尔变量直接与TRUR、FALSE、或者1 、 0 进行比较。

if(flag)   //表示flag 为真 

if(!flag)   //表示flag为假

2)整型变量与零值比较

规则:用== 和 !=直接与0 比较。

if (value == 0)

if (value != 0)

3) 浮点变量与零值比较

规则:不可将浮点变量用 == 或 != 与任何数进行比较。而要注意浮点型变量都是有精度的。应该设法转化为 >= 或者 <=

将 if (x == 0.0)改为 if ((x>=-eps) && (x<=eps))

4)指针变量与零值比较

规则:应该将指针变量用 == !=与NULL进行比较。

        指针变量的零值为 空 。尽管NULL的值与0相同,但两者意义不同。

if(p == NULL) 或者 if (p != NULL)

5)补充说明

有些程序中这样写 if (NULL == P) 这是为了防止用户这么写if (p = NULL)

程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序
if (condition)
return x;

return y;

改写为

if (condition)
{
    return x; 

}
else
{
    return y;
}
或者改写成更加简练的
return (condition ? x : y);

4.4  循环语句的效率

提高循环的效率的基本办法就是降低循环体的复杂性。

规则:当有循环的嵌套时候,建议把最长的循环放在内层。

规则:如果循环体内存在逻辑判断,且循环次数很大,建议将逻辑判断放至外层。

 

4.5  for 语句的循环控制变量

   规则:采用半开半闭区间的写法

for (int x=0; x<n; x++)

4.6  switch语句

    首先,switch语句是多分支语句。基本格式如下:

switch(variable)

{

    case value1:    ;break;

    case value2:    ;break;

    case value3:    ;break;

    default:           ;break;

}

规则:每个case分支后面,不要忘了加break,且最后还有default分支。

 

重读金典------高质量C编程指南(林锐)-------第四章 表达式和基本语句的更多相关文章

  1. 重读金典------高质量C编程指南(林锐)-------第七章 内存管理

    2015/12/10补充: 当我们需要给一个数组返回所赋的值的时候,我们需要传入指针的指针.当我们只需要一个值的时候,传入指针即可,或者引用也可以. 结构大致如下: char* p = (char*) ...

  2. 重读金典------高质量C编程指南(林锐)-------第一章 文件结构

    第一章  文件结构       C/C++程序通常由两个文件组成,一个文件保存程序的声明,称为头文件,.h 文件.一个保存程序的实现,称为定义文件.c文件. 1.1 版权与版本的声明 版权和版本的声明 ...

  3. 重读金典------高质量C编程指南(林锐)-------第六章 函数设计

    函数设计最重要的无外乎两个方面,一个是函数的接口设计一个是内部实现的一些规则. 在C语言中,函数的参数和返回值的传递方式分为两种: 值传递与指针传递.而C++中,多了一个引用传递. 引用传递有些像指针 ...

  4. 重读金典------高质量C编程指南(林锐)-------第五章 常量

    5.1  为什么需要常量 1)为了便于用户理解,增加程序的可读性. 2)在程序的很多地方都用到同一个常量,用某一个宏常量来定义可以减少错误. 规则:尽可能的使用含义直观明确的常量来表示程序中多次出现的 ...

  5. 重读金典------高质量C编程指南(林锐)-------第三章 命名规则

      3.1  共性规则 规则:标识符应该直观且可以拼读,可进行英语翻译. 规则:标识符的长度需要控制好,不应该太长. 规则:命名规则应该同操作系统或者开发工具等保持一致,比如大小写混用.AddChar ...

  6. 重读金典------高质量C编程指南(林锐)-------第二章 程序的板式

    2.1 空行 规则1:在每个类声明之后,每个函数定义结束之后加空行. 规则2:在某个函数体内,相关的不加空行,不相关的加空行. // 空行 void Function1(-) { - } // 空行 ...

  7. 安卓权威编程指南-笔记(第27章 broadcast intent)

    本章需求:首先,让应用轮询新结果并在有所发现时及时通知用户,即使用户重启设备后还没有打开过应用.其次,保证用户在使用应用时不出现新结果通知. 1. 一般intent和broadcast intent ...

  8. 安卓权威编程指南-笔记(第21章 XML drawable)

    在Andorid的世界里,凡事要在屏幕上绘制的东西都可以叫drawable,比如抽象图形,Drawable的子类,位图图形等,我们之前用来封装图片的BitmapDrawable就是一种drawable ...

  9. C# 《编写高质量代码改善建议》整理&笔记 --(四)资源管理&序列化

    1.显示释放资源需继承接口IDisposable 什么是资源:C#中每一个类型都代表一种资源,而资源又分为以下两类. 托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源 ...

随机推荐

  1. [luogu3768] 简单的数学题 [杜教筛]

    题面: 传送门 实际上就是求: 思路: 看到gcd就先反演一下,过程大概是这样: 明显的一步反演 这里设,S(x)等于1到x的和 然后把枚举d再枚举T变成先枚举T再枚举其约数d,变形: 后面其中两项展 ...

  2. [ZJOI2015][bzoj3924] 幻想乡战略游戏 [动态点分治]

    唉:-(动态点分治的思想真是复杂...... 先码住,再做几道题再来填坑 PS:接下来的Code因为用了倍增lca所以TLE一部分,但是懒得改成RMQ了...... Code: #include< ...

  3. 【VBA】利用Range声明Array(一维/二维)

    [说明] B2开始到B?(中间不能有空格),定义一维数组Arr_approver() Dim R_sh As Worksheet Set R_sh = ThisWorkbook.Sheets(&quo ...

  4. 程序员编写API遵循法则

    Api理解: 1.遵循函数.数据库字段命名规则 2.思考项目的远景(扩展性) 3.思考团队调用是否方便及舒服 4.思考是否有灵动性

  5. Java学习路线-基础篇!

    下面以黑马程序员Java学院的学习路线为例,进行一次史无前例的剖析,我会采取连载的形式,细致的讲解零基础的人怎么学习Java.先看下Java在基础阶段的知识点路线图. 内容多吗?不要被吓到了,知识点剖 ...

  6. BZOJ 1132 Tro

    Tro [问题描述] 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 [输入格式] 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10 ...

  7. DataReader和Dataset的性能比较 以及什么时候用dataset什么时候用DataReader

    原文发布时间为:2009-11-13 -- 来源于本人的百度文章 [由搬家工具导入] DataReader和Dataset的性能比较 以及什么时候用dataset什么时候用DataReader 【技术 ...

  8. Python 函数的一般形式及参数

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/01 21:46 # @Author : lijunjiang # @Fi ...

  9. UVALive 3517:Feel Good(单调栈 Grade C)

    VJ题目链接 题意: n个数,求区间[l,r] 使得 sum[l,r]*min(a[l],a[l+1],...,a[r]) 最大.若有多种答案,输出区间最短的.若还有多组,输出最先出现的. 思路: 求 ...

  10. Codeforces 161D Distance in Tree(树型DP)

    题目链接 Distance in Tree $k <= 500$ 这个条件十分重要. 设$f[i][j]$为以$i$为子树,所有后代中相对深度为$j$的结点个数. 状态转移的时候,一个结点的信息 ...