第2章 C语言的关系与逻辑运算符 (九)

发布于:2023-01-13 ⋅ 阅读:(533) ⋅ 点赞:(0)

文档视频讲解链接地址

腾讯课堂视频链接 : 11_表达式_关系与逻辑运算符

2.11 关系与逻辑运算符

  1. 关系运算符如下:

    01-c-28

  2. 关系运算符实例

    int  a=5, b=6;
    a>(b-1)                    // 结果值为0  
    (a +1)== b                 // 结果值为1
    a>=(b-2)                   // 结果值为1
    a<100                      //  结果值为1
    (a+3)<=b                   //  结果值为0
    a != (b-1)                 //  结果值为0
    
  3. 逻辑运算符如下:
    01-c-29

  4. 逻辑非运算符

    • 逻辑非 “!” 运算符的运算律如下:
      01-c-30

    • 例如:

      int  k=8;
      ! ( k ==0)       // 结果值为1
      ! ((k-8) == 0)   // 结果值为0
      ! (k<= 0)        // 结果值为1
      
  5. 逻辑与运算符

    • 逻辑与“&&”运算符的运算规律如下:

      01-c-31

  6. 逻辑与的短路特性

    • 短路特性:如果第一个操作数是false,那么无论第二个操作数是什么值,结果也不可能等于true。

    • 形式 : (表达式1)&& ( 表达式2)

    • 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”

    • 例如:

      int x = 5, y =6 ;
      (x>5)&&(y++) ;     // 结果为假 , 运算后 x=5, y=6 
      
  7. 逻辑或运算符

    • 逻辑或||运算符的运算规律如下:

      01-c-32

  8. 逻辑或的短路特性

    • 短路特性:如果第一个操作数是true,第二个操作符就不会再被求值了。

    • 形式 : (表达式1)|| ( 表达式2)

    • 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”

    • 例如:

      int x = 5, y =6 ;
      (x<= 5)||(y++) ;    // 结果为真 , 运算后 x=5, y=6 
      
  9. 实例11 - 逻辑运算符

    int  x=5, y=18;
    (x>=5) && (y<20)        	  // 结果值为1
    ((x+1)>=0) && (y<17)      	  // 结果值为0
    ((x-8)>=0) && (y==18)      	  // 结果值为0
    ((x-5)>0)  && (y!=18)    	  // 结果值为0
    ((x>=5))   ||  (y<20)         // 结果值为1
    ((x+1)>=0) ||  (y<17)         // 结果值为1
    ((x-8)>=0) ||  (y==18)        // 结果值为1
    ((x-5)>0)  ||  (y!=18)     	  // 结果值为0
    
  • 源文件

    01-cbase\11-luoji.c
    
  • 源代码

    #include <stdio.h>  
    
    int main(int argc, char const *argv[])
    {
        int x=5,y=6;
        (x>5)&&(y++) ;      // 逻辑与的短路特性 , 结果为假 , 运算后 x=5, y=6   luo
        printf("x=%d,y=%d\n",x,y);
    
        (x<= 5)||(y++) ;    // 逻辑或的短路特性 , 结果为真 , 运算后 x=5, y=6 
        printf("x=%d,y=%d\n",x,y);
    
        x=5, y=18;
        int ret  = 0  ; 
        ret = (x>=5) && (y<20)   ;       	  // 结果值为1
        printf("1:ret=%d\n",ret) ;
    
        ret = ((x+1)>=0) && (y<17)  ;     	  // 结果值为0
        printf("2:ret=%d\n",ret) ;
    
        ret = ((x-8)>=0) && (y==18) ;    	  // 结果值为0
        printf("3:ret=%d\n",ret) ; 
    
    
        ret = ((x-5)>0)  && (y!=18)   ; 	  // 结果值为0
        printf("4:ret=%d\n",ret) ; 
        
    
        ret = ((x>=5))   ||  (y<20)     ;     // 结果值为1
        printf("5:ret=%d\n",ret) ; 
    
        ret = ((x+1)>=0) ||  (y<17)     ;    // 结果值为1
        printf("6:ret=%d\n",ret) ; 
    
        ret = ((x-8)>=0) ||  (y==18)     ;   // 结果值为1
        printf("7:ret=%d\n",ret) ; 
    
        ret = ((x-5)>0)  ||  (y!=18)     ;   // 结果值为0
        printf("8:ret=%d\n",ret) ; 
    
        return 0;
    }
    
    
  • 运行结果

    x=5,y=6
    x=5,y=6
    1:ret=1
    2:ret=0
    3:ret=0
    4:ret=0
    5:ret=1
    6:ret=1
    7:ret=1
    8:ret=0
    

网站公告

今日签到

点亮在社区的每一天
去签到