zoukankan      html  css  js  c++  java
  • 2_C语言中的数据类型 (九)逻辑运算符与if语句、switch、条件运算符?、goto语句与标号

    1          条件分支语句

    1.1       关系运算符

    在C语言中0代表false,非0代表真

    1.1.1          < 

    小于

    1.1.2          <=

    小于等于

    1.1.3          > 

    大于

    1.1.4          >=

    大于等于

    1.1.5          ==

    等于

    1.1.6          !=

    不等于

    1.2       关系运算符优先级

    前四种相同,后两种相同,前四种高于后两种优先级

    1.3       逻辑运算符

    1.3.1          &&

    当运算符左右都是真的时候,那么整个表达式的结果为真

    只有左右有一个值为假,那么整个表达式的结果为假

    1.3.2          ||

    当运算符左右只要有一个值是真的时候,那么整个表达式的结果为真

    除非左右两个值都是假,那么整个表达式的结果为假

    1.3.3          !

    当值为真的时候,表达式为假,

    当值为假的时候,表达式为真

    1.4       if

    单分支

    If (条件)

    {

    //复合语句

    }

    当条件是真的时候,复合语句才能被执行,如果条件为假的时候,复合语句不执行

    1.5       if else

    双分支

    If (条件)

    {

    复合语句1

    }

    Else

    {

    复合语句2

    }

    如果条件为真,那么执行复合语句1,否则执行复合语句2

    1.6       if else if

    多重if

    If (条件1)

    {

    复合语句1

    }

    Else if (条件2)

    {

    复合语句2

    }

    Else if (条件3)

    {

    复合语句3

    }

    Else

    {

    复合语句4

    }

    当有多个else的时候,else总是和上方最近的那个if语句配对。

    1.7      switch与break,default

    多重选择

     switch (i)

        {

        case 0:

            printf("i = 0 ");

            break;//跳出switch的复合语句块

        case 1:

            printf("i = 1 ");

            break;

        case 2:

            printf("i = 2 ");

            break;

        case 3:

            printf("i = 3 ");

            break;

        case 4:

            printf("i = 4 ");

            break;

        default://如果有所条件都不满足,那么执行default语句

            printf("error ");

        }

    什么时候用if,什么时候用switch

    当条件很复杂,一个条件中有&&,|| ,!存在,那么用if语句

    如果条件很简单,但分支很多,那么适合用switch

    1.8       条件运算符?

    一个求绝对值的例子

       int i = -8;

       int x = (i < 0) ? -i: i;

    先求?左边的条件,如果条件为真,那么等于:左边的值,否则等于:右边的值

    一个求最大值的例子

    int c = (a > b) ? a : b;

    1.3       goto语句与标号

    无条件跳转goto

    不建议使用goto语句,goto语句会使你的程序可读性变的很差

    #include <stdio.h>
    
    int main01(void)
    {
        int a, b;
        a = 10;
        b = 30;
        int i = a == b;//==是判断两个变量是否相等
        i = 3 < 5 && 3 == 2;
        i = 3 <= 5 && 3 != 2;
    
        i = 1 == 3 || 3 < 7;
    
        i = !(3 > 5 || (a = b));
    
        i = !a;
    
        a = 0;
        i = !a;
    
        i = !(a != b);
    
    
    
    
    
        printf("i = %d
    ", i);
        return 0;
    }
    
    //int main()一个函数在C语言里面,如果只是空(),代表这个函数可以有参数,也可以没有参数
    //int main(void)如果是(void),就是明确的表达,没有任何参数
    
    int main03()
    {
        int a = 3;
        int b = 5;
        if (a != b && b > 10)
        {
            printf("hello world
    ");
        }
    
    
        if (0)
        {
            printf("true
    ");
        }
        else
        {
            printf("false
    ");
        }
        return 0;
    }
    
    int main()
    {
        int a = 0;
        int b = 0;
        printf("please input a:");
        scanf("%d", &a);
        printf("please input b:");
        scanf("%d", &b);
    
        if (a > b)
        {
            printf("a = %d
    ", a);
        }else
        {
            printf("b = %d
    ", b);
        }
        return 0;
    }
    #include <stdio.h>
    
    int main01(void)
    {
        int a = 0;
        int b = 0;
        char c = 0;
    
        printf("please input a:");
        scanf("%d", &a);
        getchar();//通过getchar这个函数将之前输入a时候用户按的回车键先收到
    
        printf("please input operator:");
        scanf("%c", &c);//通过键盘输入一个字符
    
        printf("please input b:");
        scanf("%d", &b);
    
        if (c == '+')
        {
            printf("a + b = %d
    ", a + b);
        }else if (c == '-')
        {
            printf("a - b = %d
    ", a - b);
        }else if (c == '*')
        {
            printf("a * b = %d
    ", a * b);
        }else if (c == '/')
        {
            if (b == 0)
            {
                printf("error
    ");
            }else
            {
                printf("a / b = %d
    ", a / b);
            }
        }else
        {
            printf("error
    ");
        }
        return 0;
    }
    
    int main02()
    {
        int i = 1;
        switch (i)
        {
        case 0:
            printf("i = 0
    ");
            break;//跳出switch的复合语句块
        case 1:
            printf("i = 1
    ");
            break;
        case 2:
            printf("i = 2
    ");
            break;
        case 3:
            printf("i = 3
    ");
            break;
        case 4:
            printf("i = 4
    ");
            break;
        default://如果有所条件都不满足,那么执行default语句
            printf("error
    ");
        }
        return 0;
    }
    
    int main03()
    {
        int i = 10;
        if (i == 0)
        {
            printf("i = 0
    ");
        }
        else if (i == 1)
        {
            printf("i = 1
    ");
        }
        else if (i == 2)
        {
            printf("i = 2
    ");
        }
        else if (i == 3)
        {
            printf("i = 3
    ");
        }
        else if (i == 4)
        {
            printf("i = 4
    ");
        }
        else
        {
            printf("error
    ");
        }
        return 0;
    }
    
    int main04(void)
    {
        int a = 0;
        int b = 0;
        char c = 0;
    
        printf("please input a:");
        scanf("%d", &a);
        getchar();//通过getchar这个函数将之前输入a时候用户按的回车键先收到
    
        printf("please input operator:");
        scanf("%c", &c);//通过键盘输入一个字符
    
        printf("please input b:");
        scanf("%d", &b);
    
        switch (c)
        {
        case '+':
            printf("a + b = %d
    ", a + b);
            break;
        case '-':
            printf("a - b = %d
    ", a - b);
            break;
        case '*':
            printf("a * b = %d
    ", a * b);
            break;
        case '/':
            switch(b)
            {
            case 0:
                printf("error
    ");
                break;
            default:
                printf("a / b = %d
    ", a / b);
            }
            break;
        default:
            printf("error
    ");
        }
        return 0;
    }
    
    int main()
    {
        goto end;//无条件的跳转到一个标号去执行
        int a = 0;
        int b = 0;
        scanf("%d", &a);
        scanf("%d", &b);
    
    //    int c;
    //    if (a > b)
    //    {
    //        c = a;
    //    }
    //    else
    //    {
    //        c = b;
    //    }
    
        int c = (a > b) ? a : b;
    
        printf("c = %d
    ", c);
    
        end://标号
        printf("end
    ");
    
        return 0;
    
    }

    资料来源:传智播客 仅供学习研究

  • 相关阅读:
    vs2010中如何编译dll
    EM图解
    二级指针代替二维数组传入参数
    常見算法的穩定性
    Opencv +vs2010的问题之0x000007b
    Linux C程序设计大全之gdb学习
    makefile学习
    python之如何share你的module
    socket与http的区别
    最完美的单例实现
  • 原文地址:https://www.cnblogs.com/wuchuanying/p/6341564.html
Copyright © 2011-2022 走看看