嵌入式培训负债2w的第二周 上篇

二路分支

if(): 只有代码满足一定条件的时候才会执行如

if(1>0)

{

        printf("正确");

}

else :则是否则的意思如

else

{

        printf("不正确");

}

当然除了if  else  还有一个是 else if 这个是否则如果则执行某某程序

当然 if括号里面非零则也会执行 如是零则会跳出判断不进行以下判断

多路分支

switch

switch则是一种根据条件的执行不同的代码

switch (N)

{

        case 1 :

                printf("one\n");

                break;

        case 2:

                printf("two\n");

                 break;

        default:

                printf("其他数字");

}

如不输入break则会一直往下执行直到default 则才会退出

        default是在以上都没有发生的情况之下才会执行的

N必须是一个整形的表达式  switch判断的数据必须是整形或者是字符型

case语句只能带整形常量  包括整形 或者字符型

const

修饰普通变量  使得不可更改  还可以修饰指针   指针到后面指针会讲到

int const a =100;

const int b = 200;

a =20;//错误  因为我们已经把a的值给设定为一个不可更改的值  要想改他的值只能通过指针后面会讲到

b =49;

while  do.... while  for

这些都是属于循环语句可以使得程序一直的执行   程序到他的临界点则会自动的退出看示例

while(1)//while(1)是一个死循环则会一直的执行下去  因为while里面是一个非零的数值

{

}

int n =10;

while(n)

{

        printf("%d",n--);//while判断是否满足判断条件 满足则会执行下去直到n=0才会退出

}

 do..while 是先执行后判断  while和for都是先判断后执行

 // 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
do
{
    printf("%d\n", a);
    a++;
}while(a <= 100);

  • 语法点:

    • while 循环先进行判断,条件为真后才执行循环体,因此循环体可能一遍也不执行。

    • do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。

    • do-while 循环中的 while 语句后面有分号;

 for循环

  • 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量集中在一行

  • for(初始表达式1;判断表达式2;循环操作表达式3)
    {
        循环体;
    }
    // 第一条表达式只执行一遍i = 0只执行一遍
    // 然后执行表达式2,判断i 是否小于等于5,如果为真则执行{}里面的内容
    // 最后执行表达式3,i++
    // 然后一次循环完成再重新执行表达式2,判断i是否小于5,如果为真会执行
    // {}里面的内容,最后执行表达式3,i++,依次类推,直到表达式2为假
    // 则退出循环体
    for(int i = 0; i <= 5; i++)
    {
        printf("i:%d\n",i);
    }
    // 死循环
    for(;;)
    {
        
    }
    或者
    for(;;);
    //多变量
    for(int i = 0,j = 0; i < 5; i++,j++)
    {
        printf("i:%d j:%d\n",i,j);
    }

// 循环输出一系列整数,直到100为止
int a;
for(a=30; a<=100; a++)
{
    printf("%d\n", a);
}

for嵌套

int main(int argc, char const *argv[])
{
    for(int i = 0; i < 5; i++)// 外循环
    {
        for(int j = 0; j < 4; j++)// 内循环
        {
            printf("i:%d j:%d\n",i,j);
        }
    }
    return 0;
}

 

语法点:

  • 循环的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)

  • 表达式1一般用来初始化循环控制变量

  • 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环

  • 表达式3一般用来更新循环控制变量

  • 三个表达式均可以省略,但分号不能省略

  • while注重循环条件,for注重循环次数

break(退出)与continue(继续)

  • 运用场景与特点

    • break关键字只能用于循环(while for do...while)和switch语句中,表示结束循环或者跳出switch语句

    • break关键字只能跳出最近一层的循环,也就是说,如果有多重循环,只能跳出最靠近break语句那层循环

    • break关键字 不能 单独用于 if语句中,除非if语句外面包含了循环

  • 逻辑:

    • continue关键字只能用于循环体中(while do...while for),用于提前结束当前循环体后,又从最近一层循环体开始执行

    • continue关键字不能 单独用于 if语句或者switch 语句中,除非外面包含了循环

    • break:① 跳出 switch 语句; ② 跳出当层循环体

    • continue:结束当次循环,进入下次循环

 

switch(n)
{
case 1:
    printf("one\n");
    break;  // 跳出 switch 语句
case 2:
    printf("two\n");
    break;        
}

while(1)
{
    int n = scanf("%d", &a);
    if(n == 0)
        break; // 跳出当层 while 循环体
}

for(int i=1; i<=100; i++)
{
    if(i%7 == 0)
        continue; // 跳过所有能被7整除的数
     
    printf("%d\n", i);       
}

goto语句

逻辑无条件跳转

goto 语句标号;//程序会直接跳转到语句标号的地方执行

语句标号:

int main()
{
    printf("%d\n", __LINE__); // 打印第3行
    
    // 无条件跳转到label处
    goto label;
    printf("%d\n", __LINE__); // 打印第7行,此处被略过
label:  
    printf("%d\n", __LINE__); // 打印第9行
}

  • 语法:

    • goto语句直接跳转到本代码块中的标签处

    • 标签指的是以冒号结尾的标识符

  • 作用:

    • goto语句的无条件跳转不利于程序的可读性,一般不建议使用

    • goto语句常被用在程序的错误处理中

 

#include <stdio.h>

int main(int argc, char const *argv[])
{
// 注意:千万不要使用goto语句实现死循环,程序
// 无法退出    
// lable:
//     printf("当前在第:%d 行\n",__LINE__);
//     goto lable;

// goto 的唯一使用场景为跳转到出错处理
    printf("请输入字符:");
    int ch = getchar();
    if(ch == '#')
    {
        goto error;
    }
    printf("当前在第:%d 行\n",__LINE__);

// 出错处理标签一定是在程序的末尾
// 程序正常退出还是异常退出最终还是得要执行error标签的语句
error:
    printf("process exit\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值