myeclipse怎么打出逻辑运算符优先级

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Java基础02--变量、数据类型和运算符
下载积分:800
内容提示:Java基础02--变量、数据类型和运算符
文档格式:PPTX|
浏览次数:48|
上传日期: 01:01:20|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
Java基础02--变量、数据类型和运算符
关注微信公众号逻辑运算符|和||之间有什么区别?
<a href="/b/.html" title="C语言的问题#includeC语言的问题#include<stdio...
Java中,|是非短路的“或”运算,所谓的非短路的“或”就是,等到运算符两边的表达式都计算出结果之后再判断最终结果。
而||是短路的“或”运算,当||左侧的表达式结果为“True”时,就不计算右侧表达式了,直接返回“True”。
至于如何验证,你可以写2个布尔型函数,一个a(),一个b(),a()中输出this is a, b()中输出this is b,并且a()函数返回True,然后分别尝试a() | b() 和 a() || b()。
其他答案(共5个回答)
!可否定逻辑值,常用作条件和循环语句中的逻辑表达式的组成部分C语言中的逻辑值只有真(1)假(0)两种,非真即假,非假即真如if (A) dosomething(...
i++是先赋值再计算++i是先计算再赋值于是有:第一题:i=1 (i++)+(++i)+i运算顺序从左到右先算第一个括号里的i++。先赋值则1=(i++),原式...
逻辑形式包括两种-----形式逻辑,和辩证逻辑。推理形式是形式逻辑中的一种,包括假言,三段式,否定等。
在初等代数中,指加法和减法的运算,一级运算是数学中最基本的运算,也是最低级的运算,因为是先计算出其他运算的结果后最后计算加法和减法.先从左计算到右.在初等代数中...
“?:”为三目运算符,?前面的语句为判断条件,?后面的语句用:隔开,为两个执行语句,如果?前面的条件为真,则执行?后面中:前面的语句,如果?前面的条件为假,则执...
答: 大连最好的java培训学校在哪
答: 这个要设计到JNI的开发,就是用Java来调用C语言的函数库,还要编写缓冲器来解决传输问题,还有就是网络协议一定要了解,做的时候要用多线程来控制你所有的缓冲器,...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基本...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415WEB前端-JavaScript(16)
原文链接:http://www.jb51.net/article/21339.htm
js 与或运算符 || && 妙用,可用于精简代码,降低程序的可读性。
首先出个题:
假设对成长速度显示规定如下:
成长速度为5显示1个箭头;
成长速度为10显示2个箭头;
成长速度为12显示3个箭头;
成长速度为15显示4个箭头;
其他都显示都显示0各箭头。
用代码怎么实现?
差一点的if,else:
var add_level = 0;
if(add_step == 5){
add_level = 1;
else if(add_step == 10){
add_level = 2;
else if(add_step == 12){
add_level = 3;
else if(add_step == 15){
add_level = 4;
add_level = 0;
稍好些的switch:
var add_level = 0;
switch(add_step){
case 5 : add_level = 1;
case 10 : add_level = 2;
case 12 : add_level = 3;
case 15 : add_level = 4;
default : add_level = 0;
}如果需求改成:
成长速度为&12显示4个箭头;
成长速度为&10显示3个箭头;
成长速度为&5显示2个箭头;
成长速度为&0显示1个箭头;
成长速度为&=0显示0个箭头。
那么用switch实现起来也很麻烦了。
那么你有没有想过用一行就代码实现呢?
ok,让我们来看看js强大的表现力吧:
var add_level = (add_step==5 && 1) || (add_step==10 && 2) || (add_step==12 && 3) || (add_step==15 && 4) || 0;
更强大的,也更优的:
var add_level={'5':1,'10':2,'12':3,'15':4}[add_step] || 0;
第二个需求:
var add_level = (add_step&12 && 4) || (add_step&10 && 3) || (add_step&5 && 2) || (add_step&0 && 1) || 0;
首先我们来梳理一下一个概念,请你一定要记住:在js逻辑运算中,0、&&、null、false、undefined、NaN都会判为false,其他都为true(好像没有遗漏了吧,请各位确认下)&& 优先级高于 ||。.这个一定要记住,不然应用||和&&就会出现问题。
这里顺便提下:经常有人问我,看到很多代码if(!!attr),为什么不直接写if(attr);
其实这是一种更严谨的写法:
请测试 typeof 5和typeof !!5的区别。!!的作用是把一个其他类型的变量转成的bool类型。
下面主要讨论下逻辑运算符&&和||。
几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二个表达式,而||正好相反。
js也遵循上述原则。但是比较有意思的是它们返回的&#20540;。
代码:var attr = true && 4 && “aaa”;
那么运行的结果attr就不是简单的true或这false,而是”aaa”
再来看看||:
代码:var attr = attr || “”;这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始&#20540;,这在给函数的参数定义一个默认&#20540;的时候比较有用。因为js不像php可以直接在型参数上定义func($attr=5)。再次提醒你记住上面的原则:如果实参需要是0、&&、null、false、undefined、NaN的时候也会当false来处理。
if(a &=5){
alert(&你好&);
可以写成:
a &= 5 && alert(&你好&);
这样只需一行代码就搞定。但是需要注意的一点就是:js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。这就需要我们自己来权衡了。
一方面精简js代码,能实质性的减少网络流量,尤其是大量应用的js公用库。个人比较推荐的做法是:如果是相对复杂的应用,请适当地写一些注释。这个和正在表达式一样,能够精简代码,但是可读性会降低,对读代码的人要求会高些,最好的办法就是写注释。
我们可以不使用这些技巧,但是我们一定要能看懂,因为这些技巧已经广泛应用,尤其是像JQuery等js框里的代码,不理解这些你就很难看懂别人的代码。
像var Yahoo = Yahoo || {};这种是非常广泛应用的。
ok,最后让我们来看一段jQuery中的代码吧:
var wrap =
&&&&// option or optgroup
&&&&!tags.indexOf(&&opt&) &&
&&&&[ 1, &&select multiple='multiple'&&, &&/select&& ] ||
&&&&!tags.indexOf(&&leg&) &&
&&&&[ 1, &&fieldset&&, &&/fieldset&& ] ||
&&&&tags.match(/^&(thead|tbody|tfoot|colg|cap)/) &&
&&&&[ 1, &&table&&, &&/table&& ] ||
&&&&!tags.indexOf(&&tr&) &&
&&&&[ 2, &&table&&tbody&&, &&/tbody&&/table&& ] ||
&&&&// &thead& matched above
&&&&(!tags.indexOf(&&td&) || !tags.indexOf(&&th&)) &&
&&&&[ 3, &&table&&tbody&&tr&&, &&/tr&&/tbody&&/table&& ] ||
&&&&!tags.indexOf(&&col&) &&
&&&&[ 2, &&table&&tbody&&/tbody&&colgroup&&, &&/colgroup&&/table&& ] ||
&&&&// IE can't serialize &link& and &script& tags normally
&&&&!jQuery.support.htmlSerialize &&
&&&&[ 1, &div&div&&, &&/div&& ] ||
&&&&[ 0, &&, && ];
&&&&// Go to html and back, then peel off extra wrappers
&&&&div.innerHTML = wrap[1] &#43; elem &#43; wrap[2];
&&&&// Move to the right depth
&&&&while ( wrap[0]-- )
&&&&&&&&div = div.lastC
这段代码是作者用来处理 $(html) 时,有些标签必须要约束的,如&option&必须在&select&&/select&之内的。
可能你也发现了作者还有一个很巧的地方就是 !tags.indexOf(&&opt&) ,作者很巧很简单的就实现了startWith的功能了,没有一点多余的代码。jquery源代码中还有很多如此精妙的代码,大家可以去学习学习。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:196328次
积分:2601
积分:2601
排名:第14687名
转载:351篇
(1)(3)(2)(1)(9)(2)(4)(3)(5)(1)(7)(15)(6)(2)(1)(14)(11)(6)(9)(17)(27)(39)(16)(2)(24)(43)(7)(12)(32)(32)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

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

 

随机推荐