一、if、else
float变量与“零值”进行比较:
  float fTestVal = 0.0;
  if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON));   // EPSINON为之前定义好的精度
  float和double类型的数据都是有精度限制的,这样直接拿来和0.0比,当然不正确
  如果一个数落在[0.0- EPSINON,0.0+ EPSINON]这个闭区间内,我们认为在某个精度内他的值和零值相等,否则不相等。
  扩展一下,把0.0替换为任何一个你想比较的浮点数,那我们就可以比较任意两个浮点数的大小了,当然是在这个精度范围内。
  同时,也不要在很大的浮点数和很小的浮点数之间进行运算
if的其他注意事项:
  先处理正常情况,再处理异常情况
  在编写代码时要使得正常情况的执行代码清晰,确认那些不常发生的异常情况处理代码不会掩盖正常的执行路径,把正常情况放在if后面而不是else后面
 
二、switch、case
1、每个switch语句后绝对不要忘了加break,否则会导致多个分枝重叠(除非有意使多分枝重叠)
2、最后必须使用default语句,即使程序真的不需要default处理,但也要应该保留语句:
            default:
            break;
3、case后面的语句只能是整型或者字符型的常量或者常量表达式
4、排序问题:按字母或者数字顺序排序各条case语句
          switch(variable)
         {
                 case   'A':
                          //program code 
                          break;
                 case   'B':
                          //program code 
                          break;
                 case    'C':
                          //program code 
                          break;
                 default: 
                          break;
          }
5、如果有多个正常情况或者异常情况,把正常情况放在前面
6、按执行频率排列case语句,把最常执行的情况放在前面,而把最不常执行的情况放在后面
7、将default子句只用于检查真正地默认情况
 
三、do、while、for
1、break关键字表示终止本层循环,continue表示终止本轮循环,进入下一轮循环
2、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU切跨循环层的次数
3、把循环嵌套控制放在3层以内

C语言循环剖析(转载)的更多相关文章

  1. 读书笔记之:C语言深度剖析

    读书笔记之:C语言深度剖析 <C 语言深度解剖>这本书是一本“解开程序员面试笔试的秘密”的好书.作者陈正冲老师提出“以含金量勇敢挑战国内外同类书籍”,确实,这本书中的知识点都是一些在面试中 ...

  2. GO语言heap剖析及利用heap实现优先级队列

    GO语言heap剖析 本节内容 heap使用 heap提供的方法 heap源码剖析 利用heap实现优先级队列 1. heap使用 在go语言的标准库container中,实现了三中数据类型:heap ...

  3. 《C语言进阶剖析》课程目录

    <C语言进阶剖析>学习笔记                                                         本文总结自狄泰软件学院唐佐林老师的<C语言 ...

  4. Go语言循环判断的使用~

    Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...

  5. GO语言list剖析

    GO语言list剖析 本节内容 使用方法 list提供的方法 源码剖析 1. 使用方法 在GO语言的标准库中,提供了一个container包,这个包中提供了三种数据类型,就是heap,list和rin ...

  6. R语言 循环

    R语言循环 可能有一种情况,当你需要执行一段代码几次. 通常,顺序执行语句. 首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供允许更复杂的执行路径的各种控制结构. 循环语句允许 ...

  7. C语言深度剖析---预处理(define)(转载)

    1.数值宏常量     #define宏定义是个演技非常高超的替身演员,但也会耍大牌的,所以我们使用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码都认识宏了:也可以把任何东西都 ...

  8. C语言深度剖析--volatile(转载)

    volatile关键字和const一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统,硬件或者其他线程等等.遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进 ...

  9. C语言深度剖析---const关键字(转载)

    const是constant的缩写,是恒定不变的意思.被const修饰的值,是只读变量. 1.const修饰只读变量,具有不变性      #include <stdio.h> int m ...

随机推荐

  1. Python学习笔记 (3) :列表、元组的操作

    列表,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. >>> a = ['spam', 'eggs', 100, 1234] >>> a ...

  2. 数据库导出到excel

    项目结构同上一篇 泛型通用的写法 ExportExcel.java package excel; import java.io.OutputStream; import java.lang.refle ...

  3. ISO/IEC14443和15693的对比有何具体区别

    ISO14443 ISO14443A/B:超短距离智慧卡标准.这标准订出读取距离7-15厘米的短距离非接触智慧卡的功能及运作标准,使用的频率为13.56MHz.     ISO14443定义了TYPE ...

  4. mysql读写分离

    严格意义上讲,MySQL 读.写分离确实存在上述情况,这是由Master-Slave 异步复制存在延迟所导致的,且Master binlog的写入为多线程,而Slave同步的sql_thread为单线 ...

  5. ThinkPHP 3.1.2 视图-1

    一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件 [index].html(.tpl) 更换模板文 ...

  6. Never-build package 'XXXX' requires always-build package 'EhLib70'

    控件包使用了DbGridEh.Requies也加入了ehlib70.dcp就是编译时不通过,提示:      Never-build   package   'XXXX'   requires   a ...

  7. lua的前景??

    除了专业的游戏公司,貌似很少人在用lua来做开发啊,国内的lua社区越来越不行了. lua还在不断的发展,但每次新版本c接口都改动很大,项目想要升级有点困难啊. lua还有前途吗?

  8. Node.cluster

    nodejs是一个单进程单线程的引擎,只能利用到单个cpu进行计算,面对当今服务器性能的提高,cpu的利用率显然对node应有的性能大打折扣,面对这个问题,cluster应运而生. cluster介绍 ...

  9. UIButton 动态改变文本闪烁问题

    当动态改变(比如一秒改变一次)按钮的Title的时候发现按钮每次都要闪烁一下:解决方法如下: self.settleButton.titleLabel.text = title; [self.sett ...

  10. F - 蜘蛛牌(深度搜索)

    Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...