if分支语句分析:

if语句用于根据条件选择执行语句

else不能独立存在且总是与在它之前的最近if相匹配

esle语句后可以连接其他if语句

用法如下:

  1. ifcondition
  2. {
  3. //statement 1
  4. }
  5.  
  6. else
  7. {
  8. //statement 2
  9. }

if语句中零值比较的注意点:

bool型变量应该直接出现在条件中,不要进行比较,这样做更加规范,当然比较的话也没错。

  1. bool b=TRUE;
  2. if(b)
  3. {
  4. //statement 1
  5. }
  6.  
  7. else
  8. {
  9. //statement 2
  10. }

变量和0值比较的时候,0值应该出现在比较符号的左边,这样可以有时候我们将==写成了=,这个时候编译器就会给我们报错,好让我们快速找到bug的根源,但是如果你将0值写在右边的话,啥奥谢一个等号,编译器是不会报错的。

  1. int i = ;
  2. if( == i)
  3. {
  4. //statement 1
  5. }
  6.  
  7. else
  8. {
  9. //statement 2
  10. }

float型变量不能直接和0值进行比较,需要定义精度。

  1. #define EPSINON 0.000000001
  2.  
  3. float f=0.0;
  4. if((-EPSINON<=f)&&(f<=EPSINON))
  5. {
  6. //statement 1
  7. }
  8.  
  9. else
  10. {
  11. //statement 2
  12. }

switch语句分析:

  • switch语句对应单个条件多个分支的情形
  • case语句必须要有break,否则会导致分支重叠
  • default语句必须要加上,以处理特殊情况(这里讲一个小例子,有一个团队,的switch语句没有写default,但是在他们先前的思考中,一定是可以匹配到一种情况的,但是由于机器断电,或者短路路等等原因,导致没有一个case可以匹配上,这个时候就出现bug了,由于是机器问题,所以没有办法将这个bug复现,只能到现场调试)
  • case语句中的值只能是整型或者字符型
  • case语句的排列顺序,按照字母或者数字顺序排列各条语句,正常情况放在前面,异常情况放在后i面,default可以随便放,用于处理真正的默认情况。

代码程序 1:

  1. #include <stdio.h>
  2.  
  3. void f1(int i)
  4. {
  5. if( i < )
  6. {
  7. printf("Failed!\n");
  8. }
  9. else if( ( <= i) && (i <= ) )
  10. {
  11. printf("Good!\n");
  12. }
  13. else
  14. {
  15. printf("Perfect!\n");
  16. }
  17. }
  18.  
  19. void f2(char i)
  20. {
  21. switch(i)
  22. {
  23. case 'c':
  24. printf("Compile\n");
  25. break;
  26.  
  27. case 'd':
  28. printf("Debug\n");
  29. break;
  30.  
  31. case 'o':
  32. printf("Object\n");
  33. break;
  34.  
  35. case 'r':
  36. printf("Run\n");
  37. break;
  38.  
  39. default:
  40. printf("Unknown\n");
  41. break;
  42.  
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. f1();
  49. f1();
  50. f1();
  51.  
  52. f2('o');
  53. f2('d');
  54. f2('e');
  55.  
  56. return ;
  57. }

这个示例程序,向我们展示了,switch和if的用法

示例程序2:

  1. #include <stdio.h>
  2.  
  3. void f1(int i)
  4. {
  5. switch( i < )
  6. {
  7. case :
  8. printf("Failed!\n");
  9. break;
  10.  
  11. default:
  12. switch( ( <= i) && (i <= ) )
  13. {
  14. case :
  15. printf("Good!\n");
  16. break;
  17.  
  18. default:
  19. printf("Perfect!\n");
  20. break;
  21. }
  22. break;
  23. }
  24. }
  25.  
  26. void f2(char i)
  27. {
  28. if( 'c' == i )
  29. {
  30. printf("Compile\n");
  31. }
  32. else if( 'd' == i )
  33. {
  34. printf("Debug\n");
  35. }
  36. else if( 'o' == i )
  37. {
  38. printf("Object\n");
  39. }
  40. else if( 'r' == i )
  41. {
  42. printf("Run\n");
  43. }
  44. else
  45. {
  46. printf("Unknown\n");
  47. }
  48. }
  49.  
  50. int main()
  51. {
  52. f1();
  53. f1();
  54. f1();
  55.  
  56. f2('o');
  57. f2('d');
  58. f2('e');
  59.  
  60. return ;
  61. }

这个示例程序改写了上面的示例程序1,将switch用if分支语句改写,将if语句用switch语句改写,这说明这两种分支语句是可以互换的。

小结:

  • if语句适用于复杂逻辑进行判断的情形中
  • switch语句适用于对离散值进行判断的情形中
  • if语句和switch语句在功能上可以相互替换
  • if语句对于“按片”分支判断的情形 更加简洁
  • switch语句对于多分支判断的情形更加简洁

C语言进阶——分支语句06的更多相关文章

  1. C语言基础:分支语句和常见运算符 分类: iOS学习 c语言基础 2015-06-10 21:44 13人阅读 评论(0) 收藏

    if(判断条件){ 执行语句; }else if(判断条件){ 执行语句; } switch (整型表达式){  case 值1: 执行语句; break; case 值2: 执行语句; break; ...

  2. C语言进阶——循环语句07

    循环语句的基本工作方式: 通过条件表达式判定是否执行循环体 条件表达式遵循if语句表达式的原则 do,while,for的区别: do语句先执行后判断,循环体至少执行一次 while语句先判断后执行, ...

  3. C语言进阶_分支语句

    勇气是在压力之下展现出的优雅. 一.简介 C语言提供了两种分支语句可供选用,一是if.......else....类型,一种是Switch语句.两种语句都能根据条件判断结果执行不同的指令,且能进行替换 ...

  4. C语言入门(10)——if分支语句

    在我们写的函数中可以有多条语句,但这些语句总是从前到后顺序执行的.除了从前到后顺序执行之外,有时候我们需要检查一个条件,然后根据检查的结果执行不同的后续代码,在C语言中可以用分支语句实现,比如: if ...

  5. 【C疯狂的教材】(四)C语言分支语句

    1.程序的结构 程序默认从上到下顺序运行(顺序结构) 程序的结构:顺序结构.分支结构.循环结构 2.if分支语句 程序运行的过程中能够有多个选择 格式: if(表达式){ 语句块; } ...... ...

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

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

  7. HTML基础--JS简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、数组、函数、函数调用.avi

    JS简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收 ...

  8. Linux Shell系列教程之(十三)Shell分支语句case … esac教程

    本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...

  9. Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句

    一.java入门 1.Java入门学习框架: 2.常用的DOS命令: dir(directory) :    列出当前目录下的文件以及文件夹 md(make directory) :   创建目录 r ...

随机推荐

  1. sass命令

    tip:sass报错解决 通过ruby编译scss时,发现编译报错,内容如下:   Conversion error: Jekyll::Converters::Scss encountered an ...

  2. Java方法命名之“由简入繁”原则

    1.访问控制层(Controller 层)中的方法命名方向是简洁明了,向着自然化语言方向靠拢,比如“更新用户”,建议命名为“updateUser”,而非“updateUserById”,实际上我们更新 ...

  3. SPFieldLookupValue

    //得到查阅项的值SPWeb web = site.OpenWeb();SPList list = web.Lists["DemoList"];SPListItem item = ...

  4. 如何在SecureCRT中给linux上传和下载文件

    方法/步骤     需要上传或者下载,需要使用rz和sz命令.如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运行命令yum install lrzsz.   安装完成后就可以使 ...

  5. *387. First Unique Character in a String (linkedhashmap + string) debug manunally instead of using leetcode

    The ability to debug and overall thinking need to improve Given a string, find the first non-repeati ...

  6. 常用mysql系统参数参考

    http://aaronsa.blog.51cto.com/5157083/1741481

  7. EF写distinct

    在日常开发中常常是这么写的 var logErrorRequest = from l in _logErrorRepository.Table select new { WrongTime = l.W ...

  8. Top K问题-BFPRT算法、Parition算法

    BFPRT算法原理 在BFPTR算法中,仅仅是改变了快速排序Partion中的pivot值的选取,在快速排序中,我们始终选择第一个元素或者最后一个元素作为pivot,而在BFPTR算法中,每次选择五分 ...

  9. 神奇的暴力数据结构——ODT

    前言 \(ODT\),即珂朵莉树,又称老司机树(\(Old\ Driver\ Tree\)). 它是一个十分暴力的数据结构,可以用于各种乱搞,也非常的实用. 当然,这全要基于一个基本条件:数据随机. ...

  10. python 3+djanjo 2.0.7简单学习(四)--Django视图

    1.概念 Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」.比如,在一个博客应用中,你可能会创建如下几个视图: 博客首页——展示最近的几项内容. 内容“详情”页——详细展示某项内容 ...