• C语言-第11课


    第11课 - 逻辑运算符使用分析

     

    1. 实例分析

    #include <stdio.h>

    int main()

    {

        int i = 0;

        int j = 0;    

        if( ++i > 0 || ++j > 0 )

        {

            printf("%d ", i);

            printf("%d ", j);

        }   

        return 0;

    }

    运行结果:1

         0

    #include <stdio.h>

    int main()

    {

        int i = 0;

        int j = 0;    

        if( ++i > 0 && ++j > 0 )

        {

            printf("%d ", i);

            printf("%d ", j);

        }   

        return 0;

    }

    运行结果:1

      1

    1. 程序中的短路:

    ||从左向右开始计算,当遇到为真的条件时停止计算,整个表达式为真;所有条件 ;所有条件为假时表达式才为假。

    &&从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假;所有条件为真时表达式才为。

    #include <stdio.h>

    int main()

    {

        int i = 0;

        int j = 0;    

        if( i++ > 0 || ++j > 0 )

        {

            printf("%d ", i);

            printf("%d ", j);

        }   

        return 0;

    }

    运行结果:1

      1

    #include <stdio.h>

    int g = 0;

    int f()

    {

        return g++;

    }

    int main()

    {

        if( f() && f() )

        {

            printf("%d ", g);

        }   

        printf("%d ", g);    

        return 0;

    }

    运行结果:1

    f()第一次调用的时候,返回值是g,它的值是0。对于短路规则,if语句中的内容不会被调用。之后g的值加1,变为1。打印出来。

     

    1. “!”到底是什么

    C语言中的逻辑符“!”只认得0,只知道见了0就返回1,因此当其作用的值不是0时,其结果为0

    #include <stdio.h>

    int main()

    {

        printf("%d ", !0);

        printf("%d ", !1);

        printf("%d ", !100);

        printf("%d ", !-1000);

        return 0;

    }

    运行结果:1

              0

              0

              0

    1. 三目运算符

    三目运算符(a?b:c)可以作为逻辑运算符的载体。

    规则:当a的值为真时,返回b的值;否则返回c的值。

    #include <stdio.h>

    int main()

    {

        int a = 1;

        int b = 2;

        int c = 0;   

        c = a < b ? a : b;   

        //(a < b ? a : b) = 3; 这样写是错误的

    *(a < b ? &a : &b) = 3;

        printf("%d ", a);

        printf("%d ", b);

        printf("%d ", c);   

        return 0;

    }

    运行结果: 3

               2

               1

     

  • 相关阅读:
    MapReduce
    es2.0的语法学习
    java的并发
    JVM的前世今生
    linux环境jacoco接入
    每天一个linux命令--~
    每天一个linux命令--ssh的host配置用户名密码
    jenkins集成robot
    ElasticSearch学习
    rf关键字
  • 原文地址:https://www.cnblogs.com/free-1122/p/9706868.html
Copyright © 2020-2023  润新知