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. BZOJ 1015:[JSOI2008]星球大战starwar(逆向处理+并查集)

    [JSOI2008]星球大战starwar                                                时间限制: 3 Sec 内存限制: 162 MB[题目描述] ...

  2. BZOJ3260 跳 【组合数】

    题目 邪教喜欢在各种各样空间内跳.现在,邪教来到了一个二维平面. 在这个平面内,如果邪教当前跳到了(x,y),那么他下一步可以选择跳到以下4个点: (x-1,y),(x+1,y),(x,y-1),(x ...

  3. 洛谷P1175 表达式的转换

    P1175 表达式的转换 44通过 147提交 题目提供者该用户不存在 标签云端 难度提高+/省选- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 这题有毒 抄题解棒责五十! ...

  4. 多啦A梦的制作

    小叮当简单颜色单一,操作起来也很容易上手.接下来的一个实例就是用css画出一个多啦A梦,首先将其分为头部,和身体.然后,再根据身体各部分细节进行进一步的具体刻画. 由于最近一直在学习JavaWeb方面 ...

  5. Linux下对superblock的理解

    对superblock的理解首先从partition structure的结构开始: 开始的,总的来说,block这个概念好理解..下面就是对super block的理解了Super block即为超 ...

  6. 【HDOJ5510】Bazinga(KMP)

    题意:给定n个由小写字母组成的字符串,第i个字符串为a[i],求最大的j满足存在1<=i<j,a[i]不是a[j]的子串,无解输出-1 T<=50,n<=500,len[i]& ...

  7. SHELL判断服务是不是正在运行

    使用SHELL脚本进行检查服务开启情况 #!/bin/bash #需要首先安装 yum install nmap -y #检查指定端口是否开启 function checkPortStatus() { ...

  8. 爬虫学习笔记(三)requests模块使用

    前面在说爬虫原理的时候说了,就写代码自动化的获取数据,保存下来数据,那怎么写代码来请求一个网址,获取结果呢,就得用requests模块了. 这篇博客说一下requests模块的使用,requests模 ...

  9. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  10. (持续集成)win7上部署Jenkins+MSBuild+Svn+SonarQube+SonarQube Scanner for MSBuild (一)

    一.Jenkins介绍 jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的”自动化”编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java ...