选择语句

发布于:2022-11-15 ⋅ 阅读:(748) ⋅ 点赞:(0)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文是对选择语句(if,switch )等的详细解释,还说明了注释的作用


一、注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
(被注释掉的部分不会参与代码运行,仅作程序员阅读作用)

#include <stdio.h>
int Add(int x, int y)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0;
}
注释有两种风格:
C 语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释
C++ 风格的注释 //xxxxxxxx
可以注释一行也可以注释多行

二、选择语句

1.if

在学习之前,我们先了解一下语句。

C 语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
 
if语句属于控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式
C 语言支持三种结构:(顺序结构、选
择结构、循环结构),它们由特定的语句定义符组成, C 语言有九种控制语句。

不多说了,直接讲if语句

格式:

语法结构:
if(表达式)
    语句;

if(表达式)
    语句1;
else
    语句2;
//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

不是只有三种型式,else if你想写多少就写多少行 

()里的表达式结果为真,则语句执行。

C 语言中如何表示真假?
0 表示假,非 0 表示真。

说到表示真假,就涉及到了判断(运算符)

运算符

相等运算符

==运算符  a==b 如果a和b的值相等则为1,不等则为0(结果为int类行)

!=运算符 a!=b 如果a和b的值不相等则为1,相等则为0(结果为int类行)

注:==和!=是一个运算符。因此,如果在=和=之间加上空格,使其变为= =或! =,都是不行的

关系运算符

<运算符 a<b      a小于b时结果为1,反之为0(结果的类型为int)

>运算符 a>b      a大于b时结果为1,反之为0(结果的类型为int)

<=运算符 a<=b      a小于等于b时结果为1,反之为0(结果的类型为int)

>=运算符 a>=b      a大于等于b时结果为1,反之为0(结果的类型为int)

注:在使用>=和<=时,等号放在左侧(放在右侧和中间有空格都是不行的)

if的嵌套使用

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}

在if语句里套一个if语句是可以的,但以下是不行的

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
else 的匹配 else 是和它离的最近的 if 匹配的。
可以像之前的一样,
适当的使用{}使代码的逻辑更加清楚。
代码风格很重要。

2.switch语句

switch 语句也是一种分支语句。
常常用于多分支的情况。
比如:
输入 1 ,输出星期一
输入 2 ,输出星期二
输入 3 ,输出星期三
输入 4 ,输出星期四
输入 5 ,输出星期五
输入 6 ,输出星期六
输入 7 ,输出星期日
那我没写成 if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。
这就是 switch 语句。
格式:
switch ( 整型表达式 )
{
    语句项;
}
语句项 是什么呢?
// 是一些 case 语句:
// 如下:
case 整形常量表达式 :
    语句 ;

switch语句中的 break

switch 语句中,我们没办法直接实现分支,搭配 break 使用才能实现真正的分支。
#include <stdio.h>
int main()
{
    int day = 0;
    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;
   }
    return 0;
}
有时候我们的需求变了:
1. 输入 1-5 ,输出的是 “weekday”;
2. 输入 6-7 ,输出 “weekend”
#include <stdio.h>
//switch代码演示
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

只要没有break,switch语句就会一直执行。

break语句 的实际效果是把语句列表划分为不同的分支部分。

default 子句
写在任何一个 case 标签可以出现的位置。
switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个 switch 语句中只能出现一条 default 子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个 case 标签一样执行 default 子句。

总结

编程好习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break
本文是对选择语句(if, switch )等的详细解释,还说明了注释的作用