首页 > 其他分享 >分支和跳转

分支和跳转

时间:2023-02-14 23:03:16浏览次数:28  
标签:语句 逻辑 && else 运算符 statement 跳转 分支

前面介绍了循环语句,现在接着介绍另外的C控制语句:分支语句和跳转语句,让程序根据测试条件执行相应的行为。以及介绍逻辑运算符,使用逻辑运算符能在while和if的条件中测试更多的关系。当然,理论终归是理论,实践才是将理论转换为高级思维的途径。希望初学者能够多多练习。

1.if语句

if语句被称为分支语句或选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一个执行。if语句的通用格式如下:

if(expression)
statement;

if语句的结构于while语句很相似,它们的主要区别是,如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。

2.if else语句

简单形式的if语句可以让程序选择执行一条语句,或者跳过这条语句。if else的形式可以在两条语句之间做选择,并且只需测试一次。if else的语句通用格式是:

if(expression)
statement;
else
statement;

3.多重选择else if

在面对多重选择时,我们可以是使用else if扩展if else结构模拟这种情况。实际上,else if时if else语句的变式:

if(expression)
statement;
else if
statement;
else
statement;

//另一种写法
if(expression)
statement;
else{
if(expression)
statement;
else
statement;
}

因为整个if else语句被视为一条语句,因此不必将嵌套的if else语句用花括号括起来。

4.多层嵌套的if语句

上面介绍的​​if{}else if{}else{}​​是嵌套if的一种形式,当然我们也可以

if(expression){
if(expression)
statement;
else
statement;
}……

虽然if else被看作是一条语句,但是当语句过长时,我们能够使用花括号提高程序的可读性。

5.逻辑运算符

下面我们先看一个程序,计算输入的一行语句中除单引号、双引号以外的其它字符的数量。

#incluede <stdio.h>

int main(void){
char ch;
int ch_count = 0;

while((ch = getchar()) != '\n'){ //不是换行符,则执行循环体
if(ch != '"' && ch != '\'')
ch_count++;
}
return 0;
}

上述程序在测试条件中使用了逻辑与运算符&&,逻辑与运算符要求两侧表达式都为真时,完整表达式的值才为真。逻辑与的优先级比关系运算符要低,所以不用在两侧加圆括号。

逻辑运算符总共有三种:逻辑与&&,逻辑或||,逻辑非!,如果大家对它们不熟悉没关系,其实它们就是中学数学中的逻辑关系,且、或、非,即&&两侧全为真时才为真,||两侧有真即为真,!则是将真值变为假,假值变为真。

另外,如果你的键盘并不能打出上述字符,也没关系。在C99标准中,新增了可用字母拼写代替逻辑运算符的拼写,它们被定义在ios646.h头文件中,在程序包含该头文件之后,可用and代替&&、or代替||、not代替!,这类似与其它某些语言。

逻辑与&&比逻辑或||的优先级要高,但两者的优先级都比关系运算符低,比赋值运算符高,同时逻辑非!的优先级很高,位于第二个优先级,与++等运算符优先级相同,只比我们目前学过圆括号的优先级低。另外要注意,通常C对类似语句​​sum = (1 * 2) + (3 * 4)​​,对两个圆括号中的表达式求值顺序并没有规定,这取决于编译器的设计者,但是对于逻辑运算符而言,C保证了逻辑表达式的求值顺序是从左往右。&&和||运算符都是序列点(目前我们知道的序列点有分号,完整表达式,逗号运算符,&&和||运算符),所以程序会在一个运算对象到执行下一个运算符之前,所有的副作用都会生效。而且,C保证一旦发现某个元素让整个表达式无效,便立即停止求值。所以正是由于这些规定,​​while((c != getchar()) != ' ' && c != '\n')​​这样的句子才会有效且十分有用。

(续上下一篇)

标签:语句,逻辑,&&,else,运算符,statement,跳转,分支
From: https://blog.51cto.com/u_15944236/6057458

相关文章

  • 10.12条件分支的实现方法
       条件分支的实现方法同循环处理的实现方法类似,使用的也是cmp指令和跳转指令。     条件分支就是利用这些指令来实现的。代码清单10-11是,根据变量a的值来......
  • 爬取url遇到302跳转问题怎么解决?
    最近在做爬虫项目遇到一个问题,这里简单的描述下让大家帮忙看下。目标网站需要完成一一系列登录操作,经过抓包测试只需要使用简单的post请求后收到的回包中包含cookie信息,因此......
  • Vue3使用vue-router如何实现路由跳转与参数获取
    //跳转传参import{useRouter,useRoute}from'vue-router';constrouter=useRouter()constroute=useRoute()//新开页functionjump(id){consturl=router.......
  • IDEA git 本地分支 恢复
    方法1:找到右下角的日志,加入删除分支后没有关闭Idea在日志中会有一个DeleteBranches,点击后面的Restore选项可以恢复已删除的分支。 方法2:找到Remote远端,直接重新......
  • git将某分支的某次提交合并到另一分支
    比如需要将test上某次提交的代码合并到master1.切换到testgitlog找到需要合并的commitID2.切换到mastergitcherry-pickcommitID3.正常gitpush到远程master即可......
  • git删除远程分支
    git删除远程分支gitpushorigin--delete[branch_name]删除本地分支区别gitbranch-d会在删除前检查merge状态(其与上游分支或者与head)。gitbranch-D是gitbranch-......
  • GitLab CICD Day 07 - 指定分支
    新建dev分支only限制执行分支stages:-testing#stage编排-build-deployrun_test:#Jobstage:testingonly:......
  • 前端知识学习案例21vs code-跳转或者查看函数定义
    alt+鼠标点击......
  • Git的分支操作
    Git 的分支操作 内容介绍:一、分支管理二、 分支测试 一、分支管理什么是分支:对于一个商城项目:在公司开发一个商城项目,首先要用户模块、商品模块、订单模......
  • 分支预测(if里一般不要包含函数)
    在结果冒险和数据冒险中,可以发现,所有的流水线停顿的操作都要从指令执行阶段开始。流水线的前两个阶段,也就是取取指令(IF)和指令译码(ID)阶段,是不需要停顿的。CPU会在流水线里面......