• 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语句对于多分支判断的情形更加简洁
  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/luojianyi/p/9210286.html
Copyright © 2020-2023  润新知