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

 

原文地址:https://www.cnblogs.com/free-1122/p/9706868.html