if语句

什么是if语句

条件判断
如果… ,那就…
最基础的条件判断语句

基本格式

if后不需要加分号

1
2
3
4
if (条件)
{
程序;
}

赋值符号与比较符号

赋值:a = 1
比较:a == 1
if语句中用到的是 ==

什么是if - else语句

如果(if)… 就…
否则(else)…

基本格式

if后要紧接着else

1
2
3
4
5
6
7
8
if (条件)
{
程序;
}
else
{
程序;
}

if - else if语句

如果(if)… 就…
如果(else if)… 就…
此处可以多个else if
否则(else)…

理解

程序从上到下执行,进行if判断,如果都不满足,则会输出最后的else。

注意:条件一定是互相不包括的

if-else if与多个if的区别

if-else if: 如果判定成功则跳过下面的所有else if和else,直接输出结果。
多个if: 从上到下依次进行判定,上方的赋值可以被接下来的if接收。

if嵌套

从外层向内层逐层判断。
注意缩进。
很好理解这里就不展开了。

逻辑运算符

大小

符号 含义
< 小于
> 大于
== 等于
<= 小于等于
>= 大于等于

与、或、非

符号 含义
&& 与(两者同时成立)
|| 或(其中一个成立)
! 非(不成立)
!= 不等于

‘非’不经常用,经常用’不等于’

演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (i == 5 && j == 5)
{
printf("i和j都等于5 \r\n");
}

if (i == 5 || j == 5)
{
printf("i和j之间至少有一个等于5 \r\n");
}

if (i != j)
{
printf("i和j不相等 \r\n");
}

while循环

一直循环执行,直到不满足条件。

格式

1
2
3
4
while (循环条件)
{
循环内执行的程序;
}

自增语句

  • i++ : 先执行相应操作,再自增1
  • ++i : 先自增1,再执行相应操作
1
2
3
4
5
6
7
8
9
// 结果:a=0 b=1
int a = 0;
int b =0;
a = b++;

// 结果:a=1 b=1
int a = 0;
int b = 0;
a = ++b;

for循环

注意:不强制要求定义计数器 —— 计数器只是for循环最常用的写法

格式

1
2
3
4
for (初始化表达式; 条件表达式; 更新表达式)
{
循环内执行的程序;
}
  • 初始化表达式:仅在循环开始前执行 1 次
  • 条件表达式:成立则执行循环
  • 更新表达式:在每次循环体执行完毕后执行
  • 计数器本质是:初始化子句定义变量、条件子句判断数值、更新子句自增 / 自减 —— 这只是三个子句的 “常用组合”,而非唯一组合。

示例

1
2
3
4
for (int i = 0; i < 7; i++)
{
printf("%d", i);
}

注意事项

  • 大括号内的程序作为循环执行的程序
  • 如果没有大括号,只执行一行程序(尽量不要这么写)
  • for循环内定义的计数器只有循环内能用

无限循环与break

无限循环

用一个永远成立的条件实现永不跳出的循环
如:while(1 < 2)
是单片机里必备的部分
常见表达形式:while(1)

break

可以使用break语句跳出循环
只能跳出一层循环
常用于跳出无限循环

普通循环不常用break跳出
普通循环应当用循环条件来判断

循环的嵌套

!程序从上到下依次执行!
当未跳出小循环时,不执行大循环。
大循环每次执行到小循环时,都会再次判断小循环成立条件。

do-while循环

先执行循环内的程序,再判断是否符合循环条件,若不符合条件就不进入第二次循环。
也就是说循环内代码不管符不符合循环条件,至少都会被执行一次。
单片机中不常用,认识即可。
注意最后的分号

示例

1
2
3
4
5
6
scanf("%d", &i);
do
{
printf("%d\r\n", i);
i++;
}while (i <= 10);