微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > 跟着狄泰唐老师学C语言进阶教程的笔记之分支语句

跟着狄泰唐老师学C语言进阶教程的笔记之分支语句

时间:10-02 整理:3721RD 点击:
1. if语句分析

l if语句用于根据条件选择执行语句

l esle不能独立存在且总是与它最接近的if相匹配

l else 语句后可以接连其它if语句

l if语句中零值比较注意点

A. bool型变量应该出现于条件中,不能进行比较,直接使用

B. 变量和0值比较时,0值应该出现在比较符号的左边,避免将==写为=

C. float 型变量不能直接进行0值比较,需要定义精度

                file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps5927.tmp.png

l 示例:

void f1(int i)

{

        if (i < 6)

        {

                printf("Failed!\n");

        }

        else if ((6 <= i) && (i <= 8))

        {

                printf("Good!\n");

        }

        else

        {

                printf("Perfect!\n");

        }

}

2. switch 语句分析

l switch 语句对应当个条件多个分支的情形

l case 语句分支必须要break,否则导致分支重叠

l case 语句中的值只能是整型或字符型

[size=12.0000pt]l case 语句的排列顺序

A. 按照字母或数字顺序排列各条语句

B. 正常情况下放在前面,异常放在后面

C. default语句只能用于处理真正的默认情况

l default 语句有必要加上,以处理特殊情况

l 示例:

void f(int i)

{

        switch (i < 6)

        {

        case 1:

                printf("Failed!\n");

                break;

        default:

                switch ((6 <= i) && (i <= 8))

                {

                case 1:

                        printf("Good!\n");

                        break;

                default:

                        printf("Perfect!\n");

                        break;

                }

                break;

        }

}

3. 小结

l if 语句适用于复杂逻辑进行判断的情形中

l switch语句用于对离散值进行判断的情况

l if和switch语句在功能上可以相互替换的

l if语句对于“按片”分支判断的情形更加简洁

l switch语句对于多分支的情形更加简洁

第七课 循环语句分析1. 循环语句分析

l 循环语句的基本工作方式

A. 通过条件表达式判定是否执行循环体

B. 条件表达式遵循if语句表达式的原则

l do,while,for的区别

A. do 语句先执行后判断,循环体至少执行一次

B. while 语句先判断后执行,循环体可能不执行

C. for语句先判断后执行,相比while更简洁

2. do...while循环方式

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps5928.tmp.png

3. while循环方式

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps5939.tmp.png

4. for循环方式

file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps594A.tmp.png

5. 示例:计算1加到100的值

#include<stdio.h>

int f1(int n)

{

        int ret = 0;

        if (n > 0)

        {

                do

                {

                        ret += n;

                        n--;

                } while (n > 0);

        }

        return ret;

}

int f2(int n)

{

        int ret = 0;

        while (n > 0)

        {

                ret += n;

                n--;

        }

        return ret;

}

int f3(int n)

{

        int ret = 0;

        for (int i = 0; i <= n; i++)

        {

                ret += i;

        }

        return ret;

}

int main1()

{

        printf("%d\n", f1(100));

        printf("%d\n", f2(100));

        printf("%d\n", f2(100));

        getchar();

        return 0;

}

6. break 和 continue 的区别

l break 表示终止循环的执行

l continue表示终止本次循环,进入下次循环执行

l 示例:

void f11(int n)

{

                int i = 0;

        for (i = 1; i <= n; i++)

        {

                if ((i % 2) == 0)

                {

                        break;

                }

                printf("%d ", i);

        }

        printf("\n");

}

void f22(int n)

{

        int i = 0;

        for (i = 1; i <= n; i++)

        {

                if ((i % 2) == 0)

                {

                        continue;

                }

                printf("%d ", i);

        }

        printf("\n");

}

int main2()

{

        f11(10);

        f22(10);

        getchar();

        return 0;

}

7. do...while(0)妙用----避免内存泄漏案例

#include <stdio.h>

#include <malloc.h>

int func(int n)

{

        int i = 0;

        int ret = 0;

        int* p = (int*)malloc(sizeof(int) * n);

        do

        {

                if (NULL == p) break;

                if (n < 5) break;

                if (n > 100) break;

                for (i = 0; i<n; i++)

                {

                        p = i;

                        printf("%d\n", p);

                }

                ret = 1;

        } while (0);

        printf("free(p)\n");

        free(p);//do while 可以方便是释放

        return ret;

}

int main()

{

        if (func(10))

        {

                printf("OK\n");

        }

        else

        {

                printf("ERROR\n");

        }

        getchar();

        return 0;

}

8. 小结

l for 循环先进行判断在进入循环体

l 循环适合于次数固定的场合

l while 循环先进行判断再进入循环体执行

l while 循环适合于循环次数不定的场合

l do...while 循环先执行循环体再进行条件判断

l do...while 循环体至少执行一次循环体





Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top