C语言:分支和循环(上)

分支语句

1.if语句

1.1 if

格式如下:

在C语言中我们常用0表示假,用非0表示为真(一般用1来表示)

如果if后的表达式为真,则返回一个值1(为真),语句执行。若为假,则表达式返回一个0,不执行语句

例如:

如果num的值为2,表达式就返回一个1(为真)就输出haha

1.2 else

一个数不是奇数就是偶数,如果我们要判断一个数是奇数还是偶数,就要用到if...else的结构了

例如:

因为一个数除以2再取余只能为0或1,前面描述了余数为0的情况,也就是说else代表的就是前面没有描述的其他情况(余数为1)

1.3 包含多条语句

当if后的表达式为真时,需要执行的语句往往不止一条,但如果我们直接输入,计算机不知道哪里之后就不是if包含的语句了,所以我们需要用{}来表明我们需要执行的语句例如:

这就是为什么if后的本行代码无需用“;”来结尾,因为if后如果不加“{}”来区分的话,默认只控制一个语句,若加上“;”且为表达式真,则会执行一个空语句,后面的语句就失效了,所以当我们后面有多条语句要用{}来包含,else后也可以这样使用

1.4 if的嵌套

如果我们需要在一个表达式为真后在进行下一步的细分,就要用到if的嵌套了,例如我们要判断一个人是孩童,青年还是老人,用if语句的话就要使用嵌套的形式来细分了

使用嵌套的形式就能对更复杂的关系来进行区分

1.5 悬空else问题

在这个例子中不会输出任何值,是因为else会和离自己最近,且还没有其他else配对的if来进行配对,所以此处a不等于2,无法进入if控制的语句,而else又和第二个if配对,所以不输出任何值(if...else算一个语句)

此时的最下方的else由于中间的if和else最近,他们已经完成配对,所以只能和最近且没有进行配对的第一个if配对,所以会输出else下的语句

2.switch语句

switch语句用来描述多种结果时的语句,是一种特殊的if...else结构

格式如下:

a表示变量,value表示其中的值,在case和数字之间必须加上空格,在switch后输入需要判断的变量并在case中说明多种情况加上:,这里的default和else的意思相同,当需要执行多条语句时同样需要{}来区分

并且switch语句中的case之间和default并无顺序之分,default一般放在最后便于区分

操作符

1.关系操作符

C语⾔⽤于⽐较的表达式,称为“关系表达式”),⾥⾯使⽤的运算符就称 为“关系运算符”

主要有一下六种:

  • > 大于运算符
  • <小于运算符
  • >=大于等于运算符
  • <=小于等于运算符
  • ==相等运算符
  • !=不相等运算符

在使用他们来建立关系表达式时常常会返回一个值例如:

  • a < b
  • a > b
  • a <= b
  • a >= b
  • a == b
  • a != b

他们都会返回0或1来表示假和真,例如10 > 5就返回1,2 > 5就返回0

我们在编写代码时往往要规定变量的范围,用数学层面来表示时为18 < age <30我们来表示年轻人,但用if语句表示时我们发现结果有所不同

当我们输入20 < i <30时,20 < 10为假,返回一个值为0,再比较0 < 30为真所以if恒为真。所以如果要规定一个未知数的上下界需要用到逻辑操作符

2.逻辑操作符

  • ! :逻辑取反运算符(改变单个表达式的真假)。
  • && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
  • || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。

此时就会输出我们想要的结果

2.1 逻辑取反运算符!

假设一个表达式为真,那么加上!就表明在逻辑上取反为假,例如有一个变量为i,如果不想其为0就可以写成如下:

2.2逻辑或预算符||

|| 就是或运算符,也就是或者的意思, || 是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

2.3逻辑与运算符&&

&&是与运算符,也就是并的意思,&&是一个双目操作符,使用方法为a&&b,只有表达式a和b均为真时才为真

3.短路问题

短路问题具体为当左边表达式已经足够判断整个关系式的真假时,就不再实行右边的语句

例如:

当已经判断左边i > 3为假时,整个关系式为假就不会再判断i< 4,而是直接返回一个0

再或者i为2时,左边表达式也为真,整个表达式规为真后,就不会再判断i是否等于4了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值