关于C语言分支循环语句的见解--分支篇

·引子:对C语言有所涉猎的都知道C语言作为一门结构化的程序设计语言,包括三种结构——顺序结构、选择结构、循环结构。就是这区区三种结构,造就了程序设计的变化万千。而这些结构的实现,都离不开语句的使用:分支结构——if、switch;循环结构——for、while、do while。所以今天,就来谈谈我个人对C语言中分支循环语句的一些见解。

·分支结构

1、if语句

//格式
if (expression)
    statement

        当表达式成立,即为真,则语句执行;反之则语句不执行(在C语言中,0表示假;非0表示真)。

if (flag == 0)
    printf("%s", "Hello world!\n");

        在实际编程中 if语句 常常与 else语句 连用,构成了“如果则+反之则”的逻辑关系。

if (flag == 0)
    printf("%s", "Hello world!\n");
else
    printf("%s", "Hello C!\n");

        注:无论是 if 还是 else 语句,都默认只控制一条语句。所以如果要控制多条语句,则要运用 大括号“{}” 将多条语句合并成一条 “大”语句。   `

if (flag == 0)
{
    printf("%s", "Hello world!\n");
    printf("%s", "Hello C!\n");
}

         对于if-else语句的嵌套,个人认为是一个“无限套娃”的问题,只要抓住if与else的一一对应,就不难搞混之间的逻辑关系。唯一要注意的一点是:在C语言中else语句的“就近原则”,即else总是跟离它最近的if语句搭配。所以无论是在C语言还是其它的编程语言中,我们都应讲究高质量的编码效果,即编得简洁、看得“清楚”、理得明白。

2、关系操作符

        在讲述C语言的分支循环结构中就不得不引入关系操作符的应用。在编程语言中,必然存在语句之间的相互比较判断。C语言中用于比较的表达式称为“关系表达式”,里面使用的运算符就称作“关系运算符”。主要有这六种:>、<、>=、<=、==、!=。关系表达式通常返回0或1,表示真假。

        注1:“==”与“=”

        其中的相等运算符“==”应引起注意,与“=”不同,前者是语句的比较,后者是变量的赋值,有着天壤之别。在运行时若出现意料之外的结果时,不妨检查一下这个双写“=”。

        注2:多个关系运算符不宜连用

        由于C语言中对关系运算符的计算顺序是从左到右的,所以下列举例的两者所运行结果是不同的。

i < j < k
(i < j) < k

        不同于加法交换律,在运行上面一个代码时,先会将变量i和j进行比较,并输出0或1,再将0或1与k进行比较并输出,就可以等效为下面一个代码,这与我们的编程初心大相径庭。

        于是为了解决这个问题,C语言为我们提供了逻辑操作符。

3、逻辑操作符

        在上文为了方便我们对程序的编写和逻辑判断,C语言提供了三个逻辑操作符:“&&”、“||”、“!”,用于构建更复杂的表达式。

        “&&”——与运算符,即并且的意思,与数电中的与门意思相同。

        “||”——或运算符,即或者的意思,与数电中的或门意思相同。

        “!”——取反运算符,与数电中的非门意思相同。

3 < 4 && 4 < 5  //输出真
3 > 4 && 4 < 5  //输出假

3 < 4 || 4 < 5  //输出真
3 > 4 || 4 < 5  //输出真
3 > 4 || 4 > 5  //输出假

4、switch语句

        除了if语句,C语言还提供了 switch语句来实现分支结构。switch语句是一种特殊形式的if-else语句,用于判断条件有多个结果的情况,相比else if更易用,可读性更好。

//格式
switch (expression)
{
    case value1:statement
    case value2:statement
    default: statement
}

        switch语句根据表达式expression不同的值,执行相应的case语句;如果找不到对应的值,则执行default分支。

注:(1)switch后面的expression必须是整型表达式;(2)case后面的必须是整型常量表达式;

(3)case与后面的数字之间必须有空格;(4)每个case语句中的代码执行完成后需要加上break才能跳出这个switch语句。

//格式
switch (expression)
{
    case value1:
        statement;
        break;
    case value2:
        statement;
        break;
    default: 
        statement;
        break;
}

        当然,switch语句中的case语句支持多条语句叠加,便于多条件的匹配。

//格式
switch (expression)
{
    case value1:
    case value2:
        statement;
        break;
    default: 
        statement;
        break;
}

 Ps:如有错误,欢迎私信指出。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值