这篇文章将梳理分支和循环语句的一些重要知识点。
首先,分支语句分为if语句和switch语句;循环语句分为do while循环、while循环和for循环。
if语句的基本语法为:
if(表达式)
语句1;
若if后面要根多条语句,则需要用{}括起来,如下:
if(表达式)
{
语句1;
语句2;
语句3;
}
else是跟着if语句一起用的,基本语法如下:
if(表达式)
语句1;
else
{
if(表达式2)
语句2;
else
语句3;
}
if(表达式)
语句1;
else
语句2;
默认情况下,if和else的后边只能跟一条语句,若要跟多条语句,需要用{}括起来。
嵌套if语句需注意的是,else只和最近的if配套,所以敲代码的时候一定要养成一个好习惯,自动对齐。
关系操作符
当一个变量和常量比较相等的时候,建议将常量放在==的左边。
多个关系运算符不宜连用,例a<b<c
< ⼩于运算符
• >= ⼤于等于运算符
• <= ⼩于等于运算符
• == 相等运算符
• != 不相等运算符
条件操作符:
条件操作符也称三目操作符,需要接受3个操作数。基本格式为exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如 果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。例如:
if(a > 5)
b = 3;
else
b = -3;
那段代码可转化为
b = (b > 5?3:-3)
if(month >= 3 && month <= 5)
逻辑运算符分为 !:逻辑取反运算符。其作用是改变单个表达式的真假。
&&:逻辑与运算符。(两侧表达式都为真,则为真)
||:逻辑或运算符。(两侧表达式有一个为真,则为真)
在&&和||运算符里值得注意的是,短路
短路
C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个 顺序是 保证的。 如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种 情况称为“短路”。
if(month >= 3 && month <= 5)
对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。
在||操作符里面
if(month == 12 || month==1 || month == 2)
操作符的左操作数的结果不为0时,就⽆需执⾏右操作数。像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短 路求值。
接下来让我们看看switch语句
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。
注:
• switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式
switch语句中的break
只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。例:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
若输入7,输出结果为:余数是1
余数是2
default
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏ default ⼦句。
while循环
基本语法:
while(表达式)
语句1;
例如:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
1
此代码实现了打印从1~10的数。
For循环
基本语法为
for(表达式1; 表达式2; 表达式3)
语句;//如果循环体想包含更多的语句,可以加上⼤括号
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
举个例子,在屏幕上打印1~10的值 可以用for循环来写,其代码如下、
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
while循环和for循环的对⽐
for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。
do-while 循环
基本语法为
do
语句;
while(表达式);
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。简而言之,上来直接干,然后再循环。