前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >⭐️ 关键字深度剖析 ⭐️第四章(分支和循环关键字)

⭐️ 关键字深度剖析 ⭐️第四章(分支和循环关键字)

作者头像
用户9645905
发布2022-11-30 08:05:31
2760
发布2022-11-30 08:05:31
举报
文章被收录于专栏:Linux学习~

目录

前言

语句

表达式

分支语句(选择结构)

if else组合

语法结构

if语句充当注释

else 与if的配对

注意事项

switch case 组合

语法结构

case后面的值的要求

default语句

循环语句

三种循环

语法结构

三种循环对应死循环写法

break&continue在循环中的应用

循环语句注意点

goto实现循环


前言


本文主要讲解:

  1. 分支语句
  2. 循环语句

语句


C语言中由一个分号;隔开的就是一条语句

代码语言:javascript
复制
printf("hehe");
1+2;

表达式


C语言中,用各种操作符把变量连起来,形成有意义的式子,就叫做表达式

代码语言:javascript
复制
操作符:+,-,*,/,%,>,<,=,==..

分支语句(选择结构)


if else组合


语法结构

代码语言:javascript
复制
//1
if(表达式) 
语句;
代码语言:javascript
复制
//2
if(表达式)
语句1;
else
语句2;
代码语言:javascript
复制
//3. 多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
代码语言:javascript
复制
//4. 嵌套
if(表达式1)
{
    语句1;
    if(表示式x)
    {
    语句x;
    }
    else
    {
    语句y;
    }
}
else if(表达式2)
{
    语句2;
}
else
{
    语句3;
}

注:

1. 表达式结果为真,则语句执行C中0表示假,非0表示真 (可以使用bool类型,仅限c99之后)

2. if语句执行,先执行完成表达式的值,得到逻辑结果,再进行判定,再进行分支功能

if语句充当注释

代码语言:javascript
复制
if(0)
{
    //注释的内容
}

不推荐,别人可能不理解(0表示为假,不进入循环)

else 与if的配对

结论:就近原则(养成代码块包含的代码风格)

代码语言:javascript
复制
//测试代码换一下 
int main()
{
 int x = 0;
 int y = 1;
 if (10 == x)
   if (11 == y) 
      printf("hello bit\n");
  else
      printf("hello world!\n");
 system("pause");
 return 0;
 }
//else 匹配采取就近原则

//推荐写法 
int main()
{
 int x = 0;
 int y = 1;
 if (10 == x)
 {
   if (11 == y) 
     { 
       printf("hello bit\n");
     } 
 }
 else
 {
    printf("hello world!\n");
 }
 system("pause");
 return 0;
 }

注意事项

1.if 语句后面的分号:默认为if是一个语句,而后面{ }内的执行项会固定执行 2.if else语句顺序别弄反 3.赋值运算符不能用在产生布尔值得表达式上(尽量写在判断语句之前) 4.‘=’和‘==’别混淆,会造成不必要的错误 5.if-else if语句以else结束

switch case 组合


语法结构

代码语言:javascript
复制
switch(整型变量/常量/整型表达式){
    case var1:
        break;
    case var2:
        break;
    case var3:
        break;
    default:
        break;
}

switch语句也是一种分支语句,常常用于多分支的情况 这种多分支,一般指的是很多分支,而且判定条件主要以整型为主

  • 多分支
代码语言:javascript
复制
//如
switch (day){
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期日\n");
        break;
    default:
        printf("bug!\n");
        break;
}

case的作用:本质是进行判定功能 break在switch中的作用:break本质其实是进行分支功能 case之后,如果没有break,则会依次执行后续有效语句,直到碰到break跳出

  • 多个不同case执行同一个语句
代码语言:javascript
复制
int main()
{
    int day = 6;
    switch (day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("周内\n");
            break;
        case 6:
        case 7:
            printf("周末\n");
            break;
        default:
            printf("bug!\n");
            break;
    }
    return 0;
}

case后面的值的要求

代码语言:javascript
复制
switch(m) && case n
 
//其中m 和 n必须是什么类型变量或者表达式?      整型变量/常量/整型表达式

//case 语句后面是否可以是const修饰的只读变量呢?   不行,const修饰后为常变量但本质还是变量

default语句

default可以出现在switch内的任何部分 结论:尽管如此,我们依旧强烈推荐default应该放在case语句的最后

循环语句


三种循环


语法结构

  • while
代码语言:javascript
复制
//while
条件初始化
while(条件判定){
//业务更新
条件更新
}
  • for
代码语言:javascript
复制
//for
for(条件初始化; 条件判定; 条件更新){
//业务代码
}
  • do while
代码语言:javascript
复制
//do while
条件初始化
do{
条件更新
}while(条件判定);

三种循环对应死循环写法

代码语言:javascript
复制
while(1){
}
for(;;){
}
do{
}while(1);

break&continue在循环中的应用

代码语言:javascript
复制
int main()
{
while (1){
char c = getchar(); //获取字符//输入abcd#1234
if ('#' == c){
break;
}
printf("echo: %c\n", c);
}
system("pause");
return 0;
}
//测试用例1:break:终端输除abcd
//测试用例2:continue:终端输入abcd1234

break:跳出循环(结束循环) continue:结束本次(一次)循环

  • 注意区别:

在while或do while语句中,遇到continue跳到条件判定 在for语句中,遇到continue跳到条件更新(调整),再进行条件判定

循环语句注意点

  1. 推荐外小内大(例如双循环遍历),一般效率是会高一些,但是差别不会特别大, 实际测试的时候,出现效率现象出现反直觉现象,也不要意外
  2. 推荐条件判定使用开区间,循环次数明确,便于进行个数计算

goto实现循环


  • 例如
代码语言:javascript
复制
int main()
{
    int i = 0;
START:
    printf("[%d]goto running ... \n", i);
    ++i;
    if (i < 10){
        goto START;
    }
    printf("goto end ... \n");
    return 0;
}

一般禁用,避免破坏代码,不过有需要还是必须会用

第五章传送门:⭐️ 关键字深度剖析 ⭐️第五章(深入C语言三种类型(float/bool/指针)与“零值“的比较)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 语句
  • 表达式
  • 分支语句(选择结构)
    • if else组合
      • 语法结构
      • if语句充当注释
      • else 与if的配对
      • 注意事项
    • switch case 组合
      • 语法结构
      • case后面的值的要求
      • default语句
  • 循环语句
    • 三种循环
      • 语法结构
      • 三种循环对应死循环写法
      • break&continue在循环中的应用
      • 循环语句注意点
    • goto实现循环
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档