C语言进阶——分支语句06
if分支语句分析:
if语句用于根据条件选择执行语句
else不能独立存在且总是与在它之前的最近if相匹配
esle语句后可以连接其他if语句
用法如下:
- if(condition)
- {
- //statement 1
- }
- else
- {
- //statement 2
- }
if语句中零值比较的注意点:
bool型变量应该直接出现在条件中,不要进行比较,这样做更加规范,当然比较的话也没错。
- bool b=TRUE;
- if(b)
- {
- //statement 1
- }
- else
- {
- //statement 2
- }
变量和0值比较的时候,0值应该出现在比较符号的左边,这样可以有时候我们将==写成了=,这个时候编译器就会给我们报错,好让我们快速找到bug的根源,但是如果你将0值写在右边的话,啥奥谢一个等号,编译器是不会报错的。
- int i = ;
- if( == i)
- {
- //statement 1
- }
- else
- {
- //statement 2
- }
float型变量不能直接和0值进行比较,需要定义精度。
- #define EPSINON 0.000000001
- float f=0.0;
- if((-EPSINON<=f)&&(f<=EPSINON))
- {
- //statement 1
- }
- else
- {
- //statement 2
- }
switch语句分析:
- switch语句对应单个条件多个分支的情形
- case语句必须要有break,否则会导致分支重叠
- default语句必须要加上,以处理特殊情况(这里讲一个小例子,有一个团队,的switch语句没有写default,但是在他们先前的思考中,一定是可以匹配到一种情况的,但是由于机器断电,或者短路路等等原因,导致没有一个case可以匹配上,这个时候就出现bug了,由于是机器问题,所以没有办法将这个bug复现,只能到现场调试)
- case语句中的值只能是整型或者字符型
- case语句的排列顺序,按照字母或者数字顺序排列各条语句,正常情况放在前面,异常情况放在后i面,default可以随便放,用于处理真正的默认情况。
代码程序 1:
- #include <stdio.h>
- void f1(int i)
- {
- if( i < )
- {
- printf("Failed!\n");
- }
- else if( ( <= i) && (i <= ) )
- {
- printf("Good!\n");
- }
- else
- {
- printf("Perfect!\n");
- }
- }
- void f2(char i)
- {
- switch(i)
- {
- case 'c':
- printf("Compile\n");
- break;
- case 'd':
- printf("Debug\n");
- break;
- case 'o':
- printf("Object\n");
- break;
- case 'r':
- printf("Run\n");
- break;
- default:
- printf("Unknown\n");
- break;
- }
- }
- int main()
- {
- f1();
- f1();
- f1();
- f2('o');
- f2('d');
- f2('e');
- return ;
- }
这个示例程序,向我们展示了,switch和if的用法
示例程序2:
- #include <stdio.h>
- void f1(int i)
- {
- switch( i < )
- {
- case :
- printf("Failed!\n");
- break;
- default:
- switch( ( <= i) && (i <= ) )
- {
- case :
- printf("Good!\n");
- break;
- default:
- printf("Perfect!\n");
- break;
- }
- break;
- }
- }
- void f2(char i)
- {
- if( 'c' == i )
- {
- printf("Compile\n");
- }
- else if( 'd' == i )
- {
- printf("Debug\n");
- }
- else if( 'o' == i )
- {
- printf("Object\n");
- }
- else if( 'r' == i )
- {
- printf("Run\n");
- }
- else
- {
- printf("Unknown\n");
- }
- }
- int main()
- {
- f1();
- f1();
- f1();
- f2('o');
- f2('d');
- f2('e');
- return ;
- }
这个示例程序改写了上面的示例程序1,将switch用if分支语句改写,将if语句用switch语句改写,这说明这两种分支语句是可以互换的。
小结:
- if语句适用于复杂逻辑进行判断的情形中
- switch语句适用于对离散值进行判断的情形中
- if语句和switch语句在功能上可以相互替换
- if语句对于“按片”分支判断的情形 更加简洁
- switch语句对于多分支判断的情形更加简洁
C语言进阶——分支语句06的更多相关文章
- C语言基础:分支语句和常见运算符 分类: iOS学习 c语言基础 2015-06-10 21:44 13人阅读 评论(0) 收藏
if(判断条件){ 执行语句; }else if(判断条件){ 执行语句; } switch (整型表达式){ case 值1: 执行语句; break; case 值2: 执行语句; break; ...
- C语言进阶——循环语句07
循环语句的基本工作方式: 通过条件表达式判定是否执行循环体 条件表达式遵循if语句表达式的原则 do,while,for的区别: do语句先执行后判断,循环体至少执行一次 while语句先判断后执行, ...
- C语言进阶_分支语句
勇气是在压力之下展现出的优雅. 一.简介 C语言提供了两种分支语句可供选用,一是if.......else....类型,一种是Switch语句.两种语句都能根据条件判断结果执行不同的指令,且能进行替换 ...
- C语言入门(10)——if分支语句
在我们写的函数中可以有多条语句,但这些语句总是从前到后顺序执行的.除了从前到后顺序执行之外,有时候我们需要检查一个条件,然后根据检查的结果执行不同的后续代码,在C语言中可以用分支语句实现,比如: if ...
- 【C疯狂的教材】(四)C语言分支语句
1.程序的结构 程序默认从上到下顺序运行(顺序结构) 程序的结构:顺序结构.分支结构.循环结构 2.if分支语句 程序运行的过程中能够有多个选择 格式: if(表达式){ 语句块; } ...... ...
- 《C语言进阶剖析》课程目录
<C语言进阶剖析>学习笔记 本文总结自狄泰软件学院唐佐林老师的<C语言 ...
- HTML基础--JS简介、基本语法、类型转换、变量、运算符、分支语句、循环语句、数组、函数、函数调用.avi
JS简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收 ...
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...
- Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
一.java入门 1.Java入门学习框架: 2.常用的DOS命令: dir(directory) : 列出当前目录下的文件以及文件夹 md(make directory) : 创建目录 r ...
随机推荐
- sass命令
tip:sass报错解决 通过ruby编译scss时,发现编译报错,内容如下: Conversion error: Jekyll::Converters::Scss encountered an ...
- Java方法命名之“由简入繁”原则
1.访问控制层(Controller 层)中的方法命名方向是简洁明了,向着自然化语言方向靠拢,比如“更新用户”,建议命名为“updateUser”,而非“updateUserById”,实际上我们更新 ...
- SPFieldLookupValue
//得到查阅项的值SPWeb web = site.OpenWeb();SPList list = web.Lists["DemoList"];SPListItem item = ...
- 如何在SecureCRT中给linux上传和下载文件
方法/步骤 需要上传或者下载,需要使用rz和sz命令.如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运行命令yum install lrzsz. 安装完成后就可以使 ...
- *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 ...
- 常用mysql系统参数参考
http://aaronsa.blog.51cto.com/5157083/1741481
- EF写distinct
在日常开发中常常是这么写的 var logErrorRequest = from l in _logErrorRepository.Table select new { WrongTime = l.W ...
- Top K问题-BFPRT算法、Parition算法
BFPRT算法原理 在BFPTR算法中,仅仅是改变了快速排序Partion中的pivot值的选取,在快速排序中,我们始终选择第一个元素或者最后一个元素作为pivot,而在BFPTR算法中,每次选择五分 ...
- 神奇的暴力数据结构——ODT
前言 \(ODT\),即珂朵莉树,又称老司机树(\(Old\ Driver\ Tree\)). 它是一个十分暴力的数据结构,可以用于各种乱搞,也非常的实用. 当然,这全要基于一个基本条件:数据随机. ...
- python 3+djanjo 2.0.7简单学习(四)--Django视图
1.概念 Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」.比如,在一个博客应用中,你可能会创建如下几个视图: 博客首页——展示最近的几项内容. 内容“详情”页——详细展示某项内容 ...