循环程序结构:while

加入嵌入式技术QQ群:398294860,免费获取嵌入式技术文档,嵌入式最新学习路线指南,更多嵌入式教程,访问宅学部落淘宝店:https://wanglitao.taobao.com/

序程序结构、选择程序结构和循环程序结构是程序的三大基本程序结构。任何复杂的程序逻辑都可以由着三种基本的程序结构组合而成。

接下来我们讲一讲循环程序结构。如果我们想让某段代码重复执行若干次,或者做无限次循环运行,此时就要使用循环程序结构来实现了。C语言提供了for和do-while关键字来实现程序的循环运行,这一节,我们先讲while循环。while的使用方法如下所示:

while(表达式)
{
    执行语句1;
    执行语句2;
}

while(表达式)中的表达式的值为真(非0)时,就会执行大括号代码块内的程序,代码块的程序语句执行一遍后,再去判断表达式的值是否为真,为真的继续执行,为假的话则循环运行结束。

接下来我们编写一个程序:实现一个加法运算,接收用户输入的两个加数,打印它们的和,这个加法运算要运行3次。基于前面的程序,我们可以改写成下面的样子:

#include <stdio.h>

int main(void)
{
    int sum;
    int a, b;
    int i = 0;
    while(i < 3)
    {
        printf("input a b: ");
        scanf("%d %d", &a, &b);
        sum = a + b;
        printf("sum = %d\n", sum);
        i++;
    }
    return 0;
}

在这个程序中,我们在使用了 i < 3 这个表达式作为while循环的条件。每一次执行完代码块的程序语句,完成一次循环后,会将i的值自动加1,然后再去判断 i < 3 这个表达式的值是否成立,作为while循环的条件。编译运行上面的程序:

root@ubuntu:/home/code# gcc main.c 
root@ubuntu:/home/code# ./a.out 
input a b:1 2
sum = 3
input a b:2 3
sum = 5
input a b:3 4
sum = 7

do-while循环

while循环的运行顺序是:先判断表达式的值是否为真,然后才去运行。如果表达式的值为假,则while循环一次也不会执行。跟while循环类似的还有一个叫做do-while的循环,do-while的循环的运行顺序则是:先执行一遍,然后再去判断表达式的值是否为真。

do
{
    执行语句1;
    执行语句2;
}while(表达式);//注意,这里的分号不能省略

do-while和while循环相比,它的特殊之处在于:无论表达式是真是假,它都会先无条件执行一次,有点先斩后奏的味道。

死循环

如果我们想让一段代码一直运行,此时可以使用死循环的程序结构:

while(1)
{
    执行语句1;
    执行语句2;
}

do
{
    执行语句1;
    执行语句2;
}while(1);

我们将表达式的值设置成一个非零的常数,程序就会无限次地循环下去,除非你使用ctrl+c,结束当前进程的运行。

专门为嵌入式设计的C语言进阶视频教程:《C语言嵌入式Linux高级编程》,一共9期,涉及计算机体系结构、ARM汇编与反汇编、程序的编译链接原理、堆栈内存、Linux内核的面向对象编程思想、多任务编程、C语言的模块化编程等专题,具体课程详情可点击淘宝:C语言嵌入式Linux高级编程