C语言 逻辑运算符及其优先次序

238 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

C语言三中逻辑运算符知识点

双目运算符:

 &&  与运算  (*与就是和,两者里一个为假则都为假*)   
   ‖    或运算( *或就是两者之中选一个,在这里就是若有一个不为0则结果还是真的*)     单目运算符: 
     !       非运算   非0的数表示真,为0的数表示假
 eg1.  &&与运算:  
  int i; 
       i=7  &&   4;
       i=1;( *35都不为0,都表示为真* ) 
 int i;
 i=1  &&  0;
 i=0;(  *有一个0,都表示为假*  )

eg2. 或运算:

int i;    
i= 40;  
 i=1;(*一真一假,在或运算里,结果为真,所以还是i=1*)  

int i;  
  i=00; 
  i=0;(*两个都是假的,则结果就是假的,则为0)

如果学会了,再来复杂一点的

 int i,a=7,b=3;  
   i=(a<b)&&a ; 
   i=?

自己可以先算结果是什么再看答案 答案是 i= 0
解析,a<b是假的,则结果为0, 所以式子为 i= 0 && 7;
&&为和运算,两者若有一个为假,则结果为假!
我们再来把&& 改为‖, 那么结果 i=1 单目运算 真的非就是假的,假的非就是真的 举个例子:

        int i; 
  i==9;  //9是真的// 
  !i;  (* !表示非,就是相反的意思,则1若i为真,则 !i为假,若i为假,则!i为真*)                 
     i==0; 
    运算符优先符的关系 
    !非运算 高于 && 与运算 高于‖ 或运算
     ! 非运算高于算数运算符(=),其他两个低于运算符
    . (*如果还想知道更多的可以看之前发的  运算符的高低  文章*)

简单小题目

我们按照运算符的优先顺序练几道题 a=1,b=2,c=3,d=4;x=1,y=2 (一) a>b&&c>d =?

(二) !b==‖d<a =?

(三) a+b>c&&x+y<b=?

不要直接看答案,先算一下,再看解析

第一个,相当于(a>b) && (c>d) 则 0&&0=0;(别忘了&&为与运算)

第二个,相当于 ((!b)==c)‖(d<a) 则 由于非运算先运算,那么!2=0,再是0不等于3,则左边整个式子为0,右边式子为0 总体为0‖0=0;(别忘了‖运算为或运算)

第三个,首先要知道加减乘除取模运算符仅次于非运算,且比大于小于运算符大,这个也可以找我之前发的优先次序文章找找看,,,

则等于((a+b)>c)&&((x+y)<b), 然后将数据带入结果还是为0