目录
在了解变量的相关操作后,我们开始学习对变量的进阶操作。
一,分支判断
在我们创建变量后,往往要判断其是否符合我们使用要求,此时分支判断应运而生;下面我们学习相关函数:
1,if 语句
1)使用方法
if 在翻译为“是否,如果”,其使用方法如下:
if (判断表达式)
{
运行语句;
}
else
{
运行语句;
}
当 if 后括号内表达式成立(为真 或 非0)时,便进行大括号内的语句;否则(为假 或 为零)便跳过该语句,运行else后大括号中的语句。
当我们需要多种情况的判断时,便可以用 else if();方法如下:
if (判断表达式)
{
运行语句;
}
else if (判断表达式)
{
运行语句;
}
else
{
运行语句;
}
当然,else if 可以多次使用,不过要注意判断条件不要重复了。
注意 :
- 如果 if 后面没加大括号,运行时仅会自动运行其后一行语句;因此要想要运行多项语句便要加上大括号;
- 当if 语句中还包括 if 语句时,对于 else 所对应的 if 的判断:口诀:就近原则,即 else 对应于其上最近的 if 。当然,对与一段优秀的代码,我们应当给每个 if 与 else 与 else if 的运行语句加上大括号,表示所属关系。
2)相关操作符
(1)关系操作符
对于变量关系的判断有大于,小于,大于等于,等等;相关运算符如下:
- > 大于运算符
- < 小于运算符
- >= 大于等于运算符
- <= 小于等于运算符
- == 相等运算符
- != 不相等运算符
关系表达式的结果通常返回 0或1,表示真假;在C语言中,0表示假,非0为真。
注意:
- == 与 = 不可混淆,前者是相等运算符,而后者是赋值操作符;所以在实际编程中,切记不要遗漏==;
- 多个运算符不宜连用,如 3>a>1 ;这在编程中是不被允许的,这里会被看成3与a做比较,输出值为1或0,然后在用1或0与1进行比较,可能造成不必要的麻烦。故应当写成:a>1 && a<3 ,这里便涉及下面逻辑操作符。
(2)逻辑操作符
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有以下三种。
- ! 逻辑取反运算符,用于改变单个表达式的真假。
- && 与运算符,即并且的意思,两侧表达式都为真(都成立)时总体为真,否则为假(一假即假)。
- || 或运算符,或者的意思,当两侧表达式都为假时,总体为假,否则为真(一真即真)。
注意:
短路求值,众所周知,C语言中,一句代码的运行是从左到右的,那么在使用逻辑运算符时,如果左边表达式已经满足要求时,便不再会运行右边的表达式。
对于&& 与运算符,当左边表达式已经为假时,整个表达式已经假,那么此时右边表达式便不运行。同样的,对于|| 或运算符来说,如果左边表达式已经为真时,右边表达式便不再运行。
像这种仅仅根据左操作数的结果就知道整个表达式的结果,不在对右边操作数进行计算的运算称为短路求值。
扩展:条件操作符
形式如下:
表达式?表达式一:表达式二;
使用方法是:如果表达式成立(为真)即执行表达式一,否则执行表达式二。而执行表达式后,表达式的结果便是整个语句的结果。值得注意的是,使用时问号?与冒号:不要输入错误了。
2,switch语句
在C语言中,分支判断选择除去 if 语句外,便剩下 switch 语句了。其相似于 if...else 结构,对于多分支判断更加方便。
形式如下:
switch (判断表达式)
{
case 结果一:表达式;
case 结果二:表达式;
default:表达式;
}
在使用中,如果判断表达式所得结果能对应 case 对应的结果,则运行相应表达式,否则运行default 后的表达式。
值得注意的是:
- switch 后的判断表达式必须是整形表达式;
- case 后的结果必须是整形常量表达式。
case后面数据类型:
- 整型(
int
) - 字符型(
char
) - 枚举类型(
enum
) - 符号整型(如
short
,long
,long long
)
switch后面表达式类型:
- 整型(
int
,char
,short
,long
,long long
) - 枚举类型(
enum
) - 字符型(
char
)
注意:
- case 与后面的结果之间必须有空格
- 每一个 case 语句中,需要加上 break用于跳出该switch语句,否则会执行其他case中的代码直到遇见 break(因题制宜) 。
- 在一个 switch 语句中,case 与 default 位置无需在意上下,因为是对号入座(为了美观建议放在最下面)。
二,循环结构
循环结构分为三部分,for,while,do while,下面我们逐一进行讲解。
1,for循环
在三种循环中,因其三个部分比较集中,故 for 循环是使用最多的一个,代码形式如下:
for (表达式一; 表达式二; 表达式三)
{
循环语句;
}
其中,表达式一用于变量的初始化,表达式二用于判断是否执行循环语句,表达式三用于对循环变量的调整。执行流程是:
在整个过程中,初始化仅进行一次, 剩下的就是表达式二、三,和循环语句在循环。其实跳出循环的方式不止一种,本篇后讲。
2,while循环
while 循环与 if 的语法结构比较接近,形式如下:
while (判断式)
{
循环语句(内可含有变量的调整);
}
即当判断式为真时,执行下面的循环语句,否则便跳出循环。
3,do...while 循环
其形式如下:
do
循环语句;
while (判断式);
值得注意的是:不同于 for 与 while 的先判断后循环,do while 则是先进行一次循环在通过判断决定是否再次进行循环。
4,跳出循环的操作
在循环过程中,如果某些情况发生的时候,我们需要提前终止循环,那么我们便可以使用以下三种方式。
(1)break
break 用于永久的终止循环,及执行到break后,该循环便不会在运行,开始执行其后代码。
(2)continue
continue 用于跳过单次循环,当其执行后其后的循环语句便不再执行,会直接运行到变量调整表达式或判断表达式。注意:continue的使用要恰当,不然任意造成死循环。
以下是常见情况:
(3)goto 语句
C语言提供了一种非常特别的语法,就是 goto 语句与跳转标号,goto 语句能够实现在同一个函数内部跳转到设置好的标号处。
用法如下(用for语句举例):
for (表达式一; 表达式二; 表达式三)
{
语句;
goto next:
语句;
next:
语句;
}
值得注意的是:如果goto语句使用不当,就会导致在函数内部随意跳转,打乱程序的执行流程,建议是非必要不使用;但是goto语句的优点是:在多层循环中,可以快速跳出。