两次单目逻辑运算符非什么意思 为什么两次单目逻辑运算符非运算10的值是① 5的两次单目逻辑运算符非运算值是多少

您所在的位置: &
逻辑运算符和逻辑表达式
逻辑运算符和逻辑表达式
清华大学出版社
《Visual C++程序设计》第2章数据类型及基本运算量,本章将学习构成C++程序的基本元素,包括数据类型、常量、变量、函数和表达式等内容。本节为大家介绍逻辑运算符和逻辑表达式。
2.5.5& 逻辑运算符和逻辑表达式
在程序中不仅需要比较两个量的大小关系,而且有时会遇到更复杂的问题,这些问题涉及多个条件,可能需要根据这些具有关联关系的多个条件来决定程序下一步的工作,这就会涉及到逻辑运算符。
1. 逻辑运算符
逻辑运算符是用来表示两个操作数的逻辑关系的,C++有3个逻辑运算符,如表2-12所示。
表2-12& 逻辑运算符
1) 逻辑运算的值
逻辑运算的值也为真和假两种,分别用1和0来表示。
2) 逻辑运算求值规则
(1) 与运算&&:参与运算的两个量都为真时,结果才为真,否则为假。如下所示:
由于5&0为真,4&2也为真,相与的结果也为真。
(2) 或运算||:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。如下所示:
由于5&0为真,相或的结果也就为真。
(3) 非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。如下所示:
!(50)的结果为假。&
3) 逻辑运算符优先级
逻辑运算符和其他运算符优先级的关系由高到低可表示如下:
(1) !-&&&-&||
(2) 关系运算符!-&算术运算符-&关系运算符&&和||-&赋值运算符
按照运算符的优先顺序可以得出:
a+bc&&x+y&&&&等价于&&&&((a+b)c)&&((x+y))&
2. 逻辑表达式
用逻辑运算符将表达式组建起来构成的有意义的式子。其中的表达式可以是逻辑表达式、算术表达式、关系表达式、赋值表达式等。
1) 逻辑表达式格式
表达式&&逻辑运算符&&表达式&
其中的表达式又可以是逻辑表达式,从而组成了嵌套的情形。如下所示:
(a||b)&&c&
2) 逻辑表达式的值
逻辑表达式的值是式中各种逻辑运算的最后值,以1和0分别代表真和假。例如,!a&&b||c就是一个逻辑表达式。
在逻辑表达式的计算过程中,并不是所有的逻辑运算符都要执行,只有在必须执行下一个逻辑运算符才能求出该表达式的解时,才执行该运算符。如下所示:
(1) a&&b&&c,只有当a为真(即为非0值)时,才需要判别b的值;只有a和b都为真时才需要判别c的值;只要a为假,就不必判别b和c(此时整个表达式已确定为假)的值;若a为真,b为假,则不判别c的值。
(2) a||b||c,如果a为真(非0),就不必判别b和c;若a为假,才判别b;若a和b都为假,才判别c。
熟练掌握C++的关系运算符和逻辑运算符后,就可以巧妙地用一个逻辑表达式来表示较为复杂的条件。
例如,判别某年year是否是闰年。闰年的条件是符合下面条件二者之一:
(1) 能被4整除,但不能被100整除;
(2) 能被4整除,又能被400整除。
可用下面的逻辑表达式来表示:
(year%4==0&&year%100!=0)||(year%4==0&&year%400=0)&
当year取某一整数值时,若上述表达式的值为1(真),则year为闰年,否则不是闰年。
&【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
本教材以面向应用型人才培养为目标;以非传统的组织结构为创新点
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
多年来,Imar Spaanjaars一直是ASP.NET相关图书的畅销
《C#高级编程(第8版)》是C# 2012和.NET 4.5高级技术的
《Android 4 游戏入门经典(第3版)》将赋予您惊人的灵
该书为C#经典名著!是Wrox红皮书中最畅销的品种之一。从第1版开始就名满天下;其第3版被评选为2005年最权威的十大IT图书之一;并
51CTO旗下网站博客访问: 983964
博文数量: 200
博客积分: 3308
博客等级: 中校
技术积分: 2212
注册时间:
认证徽章:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
C语言中的运算符及其优先级
名称或含义
数组名[常量表达式]
(表达式)/函数名(形参表)
成员选择(对象)
对象.成员名
成员选择(指针)
对象指针->成员名
负号运算符
单目运算符
强制类型转换
(数据类型)表达式
自增运算符
++变量名/变量名++
单目运算符
自减运算符
--变量名/变量名--
单目运算符
取值运算符
单目运算符
取地址运算符
单目运算符
逻辑非运算符
单目运算符
按位取反运算符
单目运算符
长度运算符
sizeof(表达式)
表达式/表达式
双目运算符
表达式*表达式
双目运算符
余数(取模)
整型表达式/整型表达式
双目运算符
表达式+表达式
双目运算符
表达式-表达式
双目运算符
变量<<表达式
双目运算符
变量>>表达式
双目运算符
表达式>表达式
双目运算符
表达式>=表达式
双目运算符
表达式<表达式
双目运算符
表达式<=表达式
双目运算符
表达式==表达式
双目运算符
双目运算符
表达式&表达式
双目运算符
表达式^表达式
双目运算符
表达式|表达式
双目运算符
表达式&&表达式
双目运算符
表达式||表达式
双目运算符
条件运算符
三目运算符
赋值运算符
变量=表达式
变量/=表达式
变量*=表达式
取模后赋值
变量%=表达式
变量+=表达式
变量-=表达式
左移后赋值
变量<<=表达式
右移后赋值
变量>>=表达式
按位与后赋值
变量&=表达式
按位异或后赋值
变量^=表达式
按位或后赋值
变量|=表达式
逗号运算符
表达式,表达式,…
从左向右顺序运算
同一优先级的运算符,运算次序由结合方向所决定。
由于C语言中运算符多,优先级复杂,难以记忆,针对上述运算符,我们可以归纳成几名口诀,以便于记忆:
优先级口诀
括号成员第一;&&&&&&&
括号运算符[]()
成员运算符.&
全体单目第二;&&&&&&&
所有的单目运算符比如++
指针运算*&
乘除余三,加减四;&&
&& 这个"余"是指取余运算即%
移位五,关系六;&&&
&& 移位运算符:<> ,关系:>
等于(与)不等排第七;&
位与异或和位或;&&&&
&&这几个都是位运算:
位与(&)异或(^)位或(|)
"三分天下"八九十;&
逻辑或跟与;&&&&&&&&&&&逻辑运算符:||
十二和十一;&&&&&&&&&&&注意顺序:优先级(||)&
底于 优先级(&&)
条件高于赋值,&
三目运算符优先级排到 13
位只比赋值运算符和","高
逗号运算级最低!&&
&& 逗号运算符优先级最低
第一、像()
[] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了
第二、除了上面的四种运算符之外,接下来就是单目运算符,也就是!
++ -- - (type) * & sizeof&&了。记住它们的顺序可是自右向左啊!其实结合实例是很容易理解的,比如i++等。
第三、跟着就是双目运算符了,也是C语言运算符优先级中最容易让人混淆的地方了。其
实也没有那么可怕,你认真观察就会发现。在双目运算符中,算术运算
符优先级最高,然后是移位运算符,接着是关系运算符,再着是逻辑运算符。不过这边需要说的是,在关系运算符中,<
!=的优先级来得高。此外,在逻辑运算符中,与运算又比或运算优先级来得高,异或则处于二者之间。同样的,你可以类比出&&与||的优先级关系.
第四、在双目操作符之后,就是三目操作符了,没有什么好说的了。
第五、然后是赋值操作符,你也许会把赋值操作符与三目运算符的优先级搞混。没有关系,我想你一定写过这样的语句(如果没有,请你记住!):max
=&&(a>b)?a:b; ,从这个语句里,你就不难记住赋值运算符为什么比三目运算符的优先级低了!
第六、逗号运算符是分割各个子语句的(感觉这么说有点不准确,不过我想大家会明白我的意思的),自然优先级最低了,我想这个应该不是很容易混淆的。
总结一下,按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符
特别在双目运算符中,按
运算符优先级从高到低:算术运算符->移位运算符->关系运算符(其中==
和 !=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻辑与-〉逻辑或)!
阅读(1268) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 逻辑运算符优先级 的文章

 

随机推荐