请选择 进入手机版 | 继续访问电脑版
贠老师培训群:150322713    贠老师QQ:767708506

贠老师office培训-excel学习网

 找回密码
 立即注册
点击咨询贠老师
查看: 152|回复: 4

[C语言] C语言逻辑运算符

[复制链接]

3172

主题

3269

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22685
发表于 2015-12-24 16:29:13 | 显示全部楼层 |阅读模式
在高中数学中,我们学过逻辑运算,例如p为真命题,q就假命题,那么“p且q”为假,“p或q”为真,“非q”为真。

在C语言中,也有类似的逻辑运算:
运算符说明结合性举例
&&与运算,双目,对应数学中的“且”左结合1&&0、(9>3)&&(b>a)
||或运算,双目左结合1||0、(9>3)||(b>a)
!非运算。单目右结合!a、!(2<5)
逻辑运算的值逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示,其求值规则如下。

1) 与运算(&&)
参与运算的两个量都为真时,结果才为真,否则为假。例如:
    (5>0) && (4>2)
由于5>0为真,4>2也为真,相与的结果也为真。

2) 或运算(||)
参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:
    (5>0) || (5>8)
由于5>0为真,相或的结果也就为真。

3) 非运算(!)
参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:
    !(5>0)
的结果为假。

注意:在逻辑运算中,0 为假,非 0 值都是真,例如5为真,2*3为真。对于表达式(3+5)&&(9>3)由于3+5=8为真,9>3为真,所以结果也为真。优先级逻辑运算符和其它运算符优先级从低到高依次为:赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)

“&&”和“||”低于关系运算符,“!”高于算术运算符。

按照运算符的优先顺序可以得出:
  • a>b && c>d  等价于  (a>b)&&(c>d)
  • !b==c||d<a  等价于  ((!b)==c)||(d<a)
  • a+b>c&&x+y<b  等价于  ((a+b)>c)&&((x+y)<b)

另外,逻辑表达式也可以嵌套使用,例如a>b && b || 9>ca || c>d &&  !p

逻辑运算符举例:
  • #include <stdio.h>
  • int main(){
  •     char c='k';
  •     int i=1,j=2,k=3;
  •     float x=3e+5,y=0.85;
  •     printf( "%d,%d\n", !x*!y, !!!x );
  •     printf( "%d,%d\n", x||i&&j-3, i<j&&x<y );
  •     printf( "%d,%d\n", i==5&&c&&(j=8), x+y||i+j+k );
  •     return 0;
  • }


运行结果:
0,0
1,0
0,1

本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为非0,故!!!x的逻辑值为0。对x|| i && j-3式,先计算j-3的值为非0,再求i && j-3的逻辑值为1,故x||i&&j-3的逻辑值为 1。对i<j&&x<y式,由于i<j的值为1,而x<y为0故表达式的值为1,0相与,最后为0,对i==5&&c&&(j=8)式,由于i==5为假,即值为0,该表达式由两个与运算组成,所以整个表达式的值为0。对于式x+ y||i+j+k由于x+y的值为非0,故整个或表达式的值为1。
回复

使用道具 举报

1

主题

1021

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2015-12-28 09:40:00 | 显示全部楼层
很不错的帖子,又学到了,力挺
回复 支持 反对

使用道具 举报

0

主题

895

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2016-1-26 21:09:07 | 显示全部楼层
先收藏再学习,谢谢啦!
回复 支持 反对

使用道具 举报

0

主题

942

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2018-3-25 14:30:17 | 显示全部楼层
这个资料非常不错,好东东!
回复 支持 反对

使用道具 举报

1

主题

1021

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2018-11-7 16:10:32 | 显示全部楼层
一下子解决了我工作当中的难题,谢谢楼主,非常感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



陕ICP备15003731号  

贠老师培训 GMT+8, 2018-11-18 18:58 , Processed in 0.241201 second(s), 33 queries .

快速回复 返回顶部 返回列表