zoukankan      html  css  js  c++  java
  • C语言进阶——分支语句06

    if分支语句分析:

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

    else不能独立存在且总是与在它之前的最近if相匹配

    esle语句后可以连接其他if语句

    用法如下:

    if(condition)
    {
        //statement 1      
    }
    
    else
    {
        //statement  2
    }

    if语句中零值比较的注意点:

    bool型变量应该直接出现在条件中,不要进行比较,这样做更加规范,当然比较的话也没错。

    bool b=TRUE;
    if(b)
    {
       //statement  1
    }
    
    else
    {
       //statement  2
    }

    变量和0值比较的时候,0值应该出现在比较符号的左边,这样可以有时候我们将==写成了=,这个时候编译器就会给我们报错,好让我们快速找到bug的根源,但是如果你将0值写在右边的话,啥奥谢一个等号,编译器是不会报错的。

    int i = 1;
    if(0 == i)
    {
       //statement  1
    }
    
    else
    {
       //statement  2
    }

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

    #define EPSINON 0.000000001
    
    float f=0.0;
    if((-EPSINON<=f)&&(f<=EPSINON))
    {
       //statement  1
    }
    
    else
    {
       //statement  2
    }

    switch语句分析:

    • switch语句对应单个条件多个分支的情形
    • case语句必须要有break,否则会导致分支重叠
    • default语句必须要加上,以处理特殊情况(这里讲一个小例子,有一个团队,的switch语句没有写default,但是在他们先前的思考中,一定是可以匹配到一种情况的,但是由于机器断电,或者短路路等等原因,导致没有一个case可以匹配上,这个时候就出现bug了,由于是机器问题,所以没有办法将这个bug复现,只能到现场调试)
    • case语句中的值只能是整型或者字符型
    • case语句的排列顺序,按照字母或者数字顺序排列各条语句,正常情况放在前面,异常情况放在后i面,default可以随便放,用于处理真正的默认情况。

    代码程序 1:

    #include <stdio.h>
    
    void f1(int i)
    {
        if( i < 6 )
        {
            printf("Failed!
    ");
        }
        else if( (6 <= i) && (i <= 8) )
        {
            printf("Good!
    ");
        }
        else
        {
            printf("Perfect!
    ");
        }
    }
    
    void f2(char i)
    {
        switch(i)
        {
            case 'c':
                printf("Compile
    ");
                break;
            
            case 'd':
                printf("Debug
    ");
                break;
            
            case 'o':
                printf("Object
    ");
                break;
                
            case 'r':
                printf("Run
    ");
                break;
            
            default:
                printf("Unknown
    ");
                break;
                
        }
    }
    
    int main()
    {
        f1(5);
        f1(9);
        f1(7);
        
        f2('o');
        f2('d');
        f2('e');
    
        return 0;
    }

    这个示例程序,向我们展示了,switch和if的用法

    示例程序2:

    #include <stdio.h>
    
    void f1(int i)
    {
        switch( i < 6 )
        {
            case 1:
                printf("Failed!
    ");
                break;
            
            default:
                switch( (6 <= i) && (i <= 8) )
                {
                    case 1:
                        printf("Good!
    ");
                        break;
                        
                    default:
                        printf("Perfect!
    ");
                        break;
                }
                break;
        }
    }
    
    void f2(char i)
    {
        if( 'c' == i )
        {
            printf("Compile
    ");
        }
        else if( 'd' == i )
        {
            printf("Debug
    ");
        }
        else if( 'o' == i )
        {
            printf("Object
    ");
        }
        else if( 'r' == i )
        {
            printf("Run
    ");
        }
        else
        {
            printf("Unknown
    ");
        }
    }
    
    int main()
    {
        f1(5);
        f1(9);
        f1(7);
        
        f2('o');
        f2('d');
        f2('e');
    
        return 0;
    }

    这个示例程序改写了上面的示例程序1,将switch用if分支语句改写,将if语句用switch语句改写,这说明这两种分支语句是可以互换的。

    小结:

    • if语句适用于复杂逻辑进行判断的情形中
    • switch语句适用于对离散值进行判断的情形中
    • if语句和switch语句在功能上可以相互替换
    • if语句对于“按片”分支判断的情形 更加简洁
    • switch语句对于多分支判断的情形更加简洁
  • 相关阅读:
    树状数组 浅显学习
    主席树 浅显学习
    B
    python测试开发面试之深浅拷贝
    2020年全网最全的自动化测试面试题及答案--吊打面试官就靠它了!
    软件测试员这个工作怎么样?做软件测试员这个职业有什么好处吗?
    软件测试能干到多少岁?写给像我相同迷茫的人
    python+requests实现接口自动化
    Python+selenium自动化测试之浏览器基础操作
    如何用 Python 做自动化测试【进阶必看】
  • 原文地址:https://www.cnblogs.com/luojianyi/p/9210286.html
Copyright © 2011-2022 走看看