版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
19.4ActionScript中語(yǔ)句、表達(dá)式和運(yùn)算符語(yǔ)句、表達(dá)式和運(yùn)算符是在程序開(kāi)發(fā)中經(jīng)常使用術(shù)語(yǔ)。那么,究竟什么算是表達(dá)式,如何才算語(yǔ)句,運(yùn)算符均有哪些?本節(jié)就將討論這些問(wèn)題。19.4.1語(yǔ)句、表達(dá)式和運(yùn)算符關(guān)系可以這樣來(lái)描述三者關(guān)系:語(yǔ)句是完整“代碼句子”,它是完整一句話,可以用來(lái)做某些事情。而表達(dá)式更象是不完整只言片語(yǔ),可比作短語(yǔ)或詞組,由于它們自身不能做任何事情,而是被用在語(yǔ)句中。表達(dá)式在被求值時(shí)會(huì)產(chǎn)生一種值。例如:如果你求值表達(dá)式“慢得象蝸?!?,你將得到一種實(shí)際值(也許是每小時(shí)1米)。這與在Flash中工作同樣—表達(dá)式price/2將產(chǎn)生一種值。而運(yùn)算符,作為一種表達(dá)式一某些,是用來(lái)指定如何組合、比較或修改表達(dá)式值字符。運(yùn)算符在其上執(zhí)行運(yùn)算元素被稱為操作數(shù),運(yùn)算符可以在一種或各種操作數(shù)上執(zhí)行某個(gè)運(yùn)算。例如:“加”運(yùn)算符(+)在兩個(gè)數(shù)字(操作數(shù))上執(zhí)行相加運(yùn)算。表達(dá)式2+2將產(chǎn)生一種值(4)。最后,語(yǔ)句sum=2+2;做了一件把值4賦給了變量sum事情。OK,當(dāng)前咱們已經(jīng)懂得了這些術(shù)語(yǔ)含義,可以仔細(xì)探究它們了。19.4.2算術(shù)運(yùn)算符讓咱們關(guān)注這些執(zhí)行簡(jiǎn)樸算術(shù)運(yùn)算運(yùn)算符。這些運(yùn)算符不會(huì)變化它們操作數(shù)并且(當(dāng)基于數(shù)字操作數(shù)執(zhí)行操作時(shí))你總能得到你期待成果。運(yùn)算符執(zhí)行運(yùn)算+加法。即對(duì)兩個(gè)數(shù)字操作數(shù)執(zhí)行相加運(yùn)算。當(dāng)兩個(gè)操作數(shù)中至少有一種是字符串時(shí),F(xiàn)lash會(huì)試圖把另一種也轉(zhuǎn)換成字符串,然后把兩個(gè)字符串串聯(lián)成一種字符串。-作為二元運(yùn)算符時(shí)(簡(jiǎn)而言之,使用兩個(gè)操作數(shù)),它將對(duì)兩個(gè)數(shù)字操作數(shù)執(zhí)行相減運(yùn)算;作為一元運(yùn)算符時(shí)(基于一種操作數(shù)),通過(guò)將它放置到一種操作數(shù)前面,它將產(chǎn)生操作數(shù)顛倒符號(hào)后成果。如果操作數(shù)是正,則成果將是負(fù)。如果操作數(shù)是負(fù),則成果將是正。*乘法。即對(duì)兩個(gè)數(shù)字操作數(shù)執(zhí)行相乘運(yùn)算。/除法。即對(duì)兩個(gè)數(shù)字操作數(shù)執(zhí)行相除運(yùn)算。%求模。即對(duì)兩個(gè)數(shù)字操作數(shù)執(zhí)行求模運(yùn)算。這會(huì)產(chǎn)生第一種數(shù)字除以第二個(gè)數(shù)字余數(shù)。例如:20%7將產(chǎn)生6。除此之外,尚有兩個(gè)運(yùn)算符(++和--)也執(zhí)行簡(jiǎn)樸算術(shù)操作。但由于它們都變化了各自操作數(shù),因而我決定在本節(jié)背面“賦值運(yùn)算符”某些中討論它們。盡管你可以借助Flash內(nèi)建Math類執(zhí)行許多額外數(shù)學(xué)運(yùn)算(它們將在第二十四章中進(jìn)行討論),但你不要低估這些簡(jiǎn)樸運(yùn)算符在表達(dá)式中作用。當(dāng)你查看下面例子時(shí)緊記兩件事情:第一,所有變量值都假定已經(jīng)事先被設(shè)立為數(shù)字,第二,這些僅僅是表達(dá)式,因而,就它們自身而言,它們不能做任何事情。平均數(shù): sum/total一半: full/2中間點(diǎn): lowest+((highest-lowest)/2)打折時(shí)價(jià)格: price-(price*discount)秒(已知毫秒): milliseconds/1000盡管我沒(méi)有為求模(%)運(yùn)算符提供任何例子—但事實(shí)上它是你可以得到最具威力運(yùn)算符中一種。它看上去似乎相稱乏味,僅僅是一種余數(shù)而已。但考慮你如何來(lái)判斷某個(gè)數(shù)字與否是一種偶數(shù)—它應(yīng)當(dāng)可以被2整除?;蛘哒f(shuō),當(dāng)它被2除時(shí),余數(shù)應(yīng)當(dāng)是0。類似,要檢查某個(gè)數(shù)字與否可以被3整除,只需要看看當(dāng)它被3除時(shí),與否沒(méi)有余數(shù)即可。求模用武之地就在這里。如果你使用anyNumber%2并且發(fā)現(xiàn)表達(dá)式成果為0,則你就可以懂得這個(gè)數(shù)字是偶數(shù)。19.4.3比較運(yùn)算符比較運(yùn)算符被用于編寫求值成果為真或假表達(dá)式中。如果你還記得表達(dá)式普通位于一種更大語(yǔ)句中話,你就會(huì)理解為什么需要這樣表達(dá)式了。例如:就單詞“true”自身而言,它沒(méi)有任何意義。然而,一種完整有一定意義語(yǔ)句也許象這樣“如果你矯正視力達(dá)到1.0,那么你就可以學(xué)開(kāi)車?!北磉_(dá)式“如果你矯正視力達(dá)到1.0”求值成果不是true就是false。要使這個(gè)語(yǔ)句變得更明確些,你可以說(shuō)“如果表達(dá)式‘你矯正視力達(dá)到1.0’為真,則你就可以學(xué)開(kāi)車?!边@個(gè)例子是一種條件語(yǔ)句。這樣語(yǔ)句將在本章背面“控制程序流程”中詳細(xì)討論。比較運(yùn)算符就其使用形式而言很容易理解。所有這些運(yùn)算符都需要兩個(gè)操作數(shù),它們構(gòu)成形式是“第一種操作數(shù)運(yùn)算符第二個(gè)操作數(shù)”(就象12>4,在這里12是第一種操作數(shù),>是運(yùn)算符,4是第二個(gè)操作數(shù))。讓咱們看看所有這些運(yùn)算符。運(yùn)算符執(zhí)行運(yùn)算>不不大于。即當(dāng)?shù)谝环N操作數(shù)不不大于第二個(gè)操作數(shù)時(shí)產(chǎn)生真,否則產(chǎn)生假。<不大于。即當(dāng)?shù)谝环N操作數(shù)不大于第二個(gè)操作數(shù)時(shí)產(chǎn)生真,否則產(chǎn)生假。>=不不大于或等于。即當(dāng)?shù)谝环N操作數(shù)不不大于或等于第二個(gè)操作數(shù)時(shí)產(chǎn)生真,否則產(chǎn)生假。<=不大于或等于。即當(dāng)?shù)谝环N操作數(shù)不大于或等于第二個(gè)操作數(shù)時(shí)產(chǎn)生真,否則產(chǎn)生假。==等于。即當(dāng)?shù)谝环N操作數(shù)與第二個(gè)操作數(shù)相等時(shí)產(chǎn)生真,否則產(chǎn)生假。===嚴(yán)格等于。即當(dāng)?shù)谝环N操作數(shù)與第二個(gè)操作數(shù)嚴(yán)格相等時(shí)產(chǎn)生真,否則產(chǎn)生假。!=不等于。即當(dāng)?shù)谝环N操作數(shù)與第二個(gè)操作數(shù)不相等時(shí)產(chǎn)生真,否則產(chǎn)生假。!==嚴(yán)格不等于。即當(dāng)?shù)谝环N操作數(shù)與第二個(gè)操作數(shù)嚴(yán)格不相等時(shí)產(chǎn)生真,否則產(chǎn)生假。記住,你使用這些運(yùn)算符編寫表達(dá)式成果總是不是真(true)就是假(false)。簡(jiǎn)樸說(shuō),它們除真或假外不能產(chǎn)生任何東西。假并不意味著不好,而恰恰也許是非常好。一種象這樣表達(dá)式25<12是不合理—它求值成果正好就是假。用比較運(yùn)算符構(gòu)成表達(dá)式普通在條件或循環(huán)語(yǔ)句中用作條件判斷。例如:if(iq>150){ trace("恭喜,你簡(jiǎn)直就是天才!") }else{ trace("抱歉,你智商還沒(méi)有達(dá)到天才級(jí)。")}有趣是盡管真和假是布爾數(shù)據(jù)類型兩種也許變化。然而,你可以在表達(dá)式中使用它們,就好像它們是數(shù)字同樣。真是1而假是0。例如:如果變量timesCheated不不大于1,則表達(dá)式score*(timesCheated<1)求值成果為0,不論score值是多少。簡(jiǎn)樸說(shuō),timesCheated<1這個(gè)某些求值成果不是true就是false(1或0)。如果timesCheated是0,則這某些就是true,而score就被1乘,成果就還是score。如果timesCheated不不大于或等于1,則這某些就是false,而score就被0乘,成果就是0。比較運(yùn)算符不但可以用于數(shù)字比較,也可以用于字符串比較。當(dāng)把比較運(yùn)算符用于字符串比較時(shí),運(yùn)算符會(huì)依照兩個(gè)字符串中左起相相應(yīng)字符ASCII碼值大小進(jìn)行比較,并返回成果true或false。如果兩個(gè)字符串頭兩個(gè)字符ASCII碼值相等話,則會(huì)繼續(xù)比對(duì)兩個(gè)字符串左起第二個(gè)字符,以此類推……,直到比出成果,或以字符更少那個(gè)字符串因再?zèng)]有字符可比而結(jié)束。讓咱們看下面兩個(gè)字符串比較例子:trace("a">"b");輸出為false。由于字符aASCII值為97,bASCII值為98,因此比較成果為false。trace("ac">"ab");輸出為true。由于第一種字符串中左起第一種字符和第二個(gè)字符串中左起第一種字符ASCII值相等,因而,繼續(xù)將第一種字符串中左起第二個(gè)字符和第二個(gè)字符串中左起第二個(gè)字符ASCII值進(jìn)行比較,而cASCII值不不大于b,因此比較成果為true。需要清晰地是,要進(jìn)行字符串比較,兩個(gè)操作數(shù)必要都是字符串才行。如果其中一種為數(shù)字,而另一種是字符串,則Flash會(huì)試圖把這個(gè)字符串轉(zhuǎn)換為數(shù)字,如果能轉(zhuǎn)換成功(如果字符串是由數(shù)字構(gòu)成話),則進(jìn)行兩個(gè)數(shù)字比較,否則,編譯器會(huì)扔給你一種undefined。trace(5>"1"); //將輸出true。由于字符串1將被轉(zhuǎn)換成數(shù)字1,然后進(jìn)行比較,成果為true。trace(5>"a"); //將輸出undefined。由于字符串a(chǎn)無(wú)法將被轉(zhuǎn)換成數(shù)字。對(duì)于進(jìn)行數(shù)字比較而言,兩個(gè)操作數(shù)完全可以是對(duì)象屬性,就像這樣:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=newPerson(3);trace(BPerson.age>APerson.age); //將輸出true。很值得談?wù)勈?=、!=、===和!==四個(gè)等于運(yùn)算符,你不但可以對(duì)數(shù)字、字符串、布爾值這些原始數(shù)據(jù)類型執(zhí)行這些關(guān)于與否相等運(yùn)算,你還可以對(duì)對(duì)象這種引用數(shù)據(jù)類型執(zhí)行此類運(yùn)算。當(dāng)對(duì)引用數(shù)據(jù)類型進(jìn)行與否相等比較運(yùn)算時(shí),只有當(dāng)兩個(gè)引用數(shù)據(jù)類型引用是同一種對(duì)象時(shí),這兩個(gè)引用數(shù)據(jù)類型才被以為是相等。下面例子中兩個(gè)對(duì)象被以為是相等:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=APerson;CPerson=APerson;trace(BPerson==CPerson); //將輸出true;下面例子中兩個(gè)對(duì)象被以為是不相等,盡管它們屬性值是相等:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=newPerson(2);trace(BPerson==APerson); //將輸出false。通過(guò)前面trace(5>"1")例子,咱們已經(jīng)懂得在Flash中,當(dāng)進(jìn)行比較操作數(shù)數(shù)據(jù)類型不同步,F(xiàn)lash會(huì)試圖對(duì)操作數(shù)類型進(jìn)行轉(zhuǎn)換,以便使其兩者可以進(jìn)行比較。但這會(huì)使得當(dāng)你使用==運(yùn)算符進(jìn)行相等比較時(shí)無(wú)法確切懂得被比較兩者數(shù)據(jù)類型與否也相似。要想進(jìn)行嚴(yán)格不進(jìn)行自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換相等比較,你需要使用===或!==運(yùn)算符。當(dāng)使用嚴(yán)格等于或嚴(yán)格不等于運(yùn)算符時(shí),只有當(dāng)兩個(gè)操作數(shù)數(shù)據(jù)類型和值都完全相等時(shí),才被以為是相等。讓咱們看下面例子:trace(true==1); //輸出為true。由于經(jīng)類型轉(zhuǎn)換后兩者相等。trace(true===1); //輸出為false。由于兩者類型不同。再看下面例子:trace(5!="5"); //輸出為false。由于經(jīng)類型轉(zhuǎn)換后兩者相等。trace(5!=="5"); //輸出為true。由于兩者類型不同。注意,等于運(yùn)算符由兩個(gè)等號(hào)構(gòu)成。單獨(dú)一種等號(hào)(=)是一種完全不同運(yùn)算符。單個(gè)等號(hào)執(zhí)行一種賦值操作(就象你將在本節(jié)中背面小節(jié)看到那樣)。簡(jiǎn)而言之,=左邊變量被賦予=右邊表達(dá)式值。這事實(shí)上是創(chuàng)立了一種完整語(yǔ)句(由于它做了某些事情)而不是象==運(yùn)算符所做那樣創(chuàng)立是一種表達(dá)式。這樣做不但僅意味著左邊變量被變化,并且如果你目是創(chuàng)立一種將產(chǎn)生真或假表達(dá)式話,則你將發(fā)現(xiàn)成果將總是產(chǎn)生真。簡(jiǎn)樸說(shuō),age=18;將18作為值賦給age,而這個(gè)語(yǔ)句求值成果將是真。相反,age==18將產(chǎn)生true或false(依賴于age變量值)。此外,當(dāng)你使用==時(shí),age值不會(huì)被變化。第一種事例說(shuō)“age當(dāng)前等于18”,而第二個(gè)事例說(shuō)“age等于18嗎?”。19.4.4字符串運(yùn)算符咱們已經(jīng)懂得,當(dāng)對(duì)兩個(gè)操作數(shù)使用+運(yùn)算符時(shí),如果這兩個(gè)操作數(shù)中至少有一種是字符串,F(xiàn)lash會(huì)試圖把另一種也轉(zhuǎn)換成字符串,然后把兩個(gè)字符串串聯(lián)成一種字符串。就像下面例子闡明那樣:a="你好,";b="世界!";c=a+b; //當(dāng)前變量c保存著字符串"你好,世界!"。再如:trace("5"+5); //輸出為55。由于數(shù)字5會(huì)被轉(zhuǎn)換成字符串"5",兩個(gè)字符串串聯(lián)成果為"55"。除了+運(yùn)算符可以應(yīng)用于字符串外,你也可以將比較運(yùn)算符應(yīng)用于字符串,其運(yùn)算方式我在前一小節(jié)中已經(jīng)解說(shuō)過(guò)了,在此不再贅述。19.4.5邏輯運(yùn)算符邏輯運(yùn)算符操作數(shù)是一種或兩個(gè)布爾值,運(yùn)算成果也是一種布爾值。邏輯運(yùn)算符“與”和“或”使用兩個(gè)操作數(shù),而“非”使用一種操作數(shù)。邏輯運(yùn)算符擴(kuò)展了比較運(yùn)算符能力,從而可以讓你做出象“age不不大于14且不大于18”(在這個(gè)事例中“且”就起到邏輯運(yùn)算符作用)這樣復(fù)合表達(dá)式。你事實(shí)上是在比較兩個(gè)表達(dá)式,但每一種表達(dá)式成果都必要是真或假。如果你是在數(shù)字上使用這些邏輯運(yùn)算符,則除0之外任何數(shù)字都被以為是真。運(yùn)算符執(zhí)行運(yùn)算&&邏輯“與”。如果兩個(gè)操作數(shù)都是真,則產(chǎn)生真,否則為假。||邏輯“或”。如果兩個(gè)操作數(shù)中任何一種(或兩個(gè)都)是真,則產(chǎn)生真,否則為假(即僅當(dāng)兩個(gè)操作數(shù)都是假是才產(chǎn)生假)。!邏輯“非”。當(dāng)操作數(shù)(跟在!之后)是假時(shí),則產(chǎn)生真,當(dāng)操作數(shù)是真時(shí),則產(chǎn)生假。讓咱們看下面例子:if((iq>150)&&(age<14)){ trace("發(fā)現(xiàn)一種天才小朋友!") }上面例子中,如果智商(iq)超過(guò)150且年齡不大于14話,則在輸出窗口顯示一段話。再看下面例子:if((stature<1.2)||(age>70)){ trace("可以免票");}else{ trace("需要購(gòu)票");}在上面例子中,如果身高低于1.2米或者年齡超過(guò)70歲都可以免票,否則就需要購(gòu)票。盡管這些表達(dá)式非常容易領(lǐng)悟,但有某些有趣基本原則需要注意。我在表達(dá)式中包括了額外圓括號(hào)以使這些表達(dá)式更加清晰。但由于邏輯運(yùn)算符優(yōu)先級(jí)非常低(關(guān)于運(yùn)算符優(yōu)先級(jí)將在本節(jié)最后進(jìn)行解說(shuō)),因而,位于邏輯運(yùn)算符兩邊表達(dá)式會(huì)一方面被求值。簡(jiǎn)樸說(shuō),age>13&&age<19將可以與(age>13)&&(age<19)同樣工作,盡管它讀起來(lái)也許有些困難。同步還要注意,“與”和“或”兩個(gè)操作數(shù)都必要是一種完整表達(dá)式。例如:age>13&&<19將不能工作。在咱們尋常說(shuō)話中,你說(shuō)“年齡不不大于13且不大于19”沒(méi)有任何問(wèn)題,但在ActionScript中,你應(yīng)當(dāng)說(shuō)“年齡不不大于13且年齡不大于19”。19.4.6位運(yùn)算符位運(yùn)算符將是你至少用到運(yùn)算符,我想你們中某些人也許永遠(yuǎn)都不會(huì)需要使用它。位運(yùn)算普通只在運(yùn)用匯編語(yǔ)言或C/C++語(yǔ)言進(jìn)行系統(tǒng)軟件中底層開(kāi)發(fā)時(shí)才會(huì)用到,在Flash中幾乎沒(méi)有什么用處。但不論怎么說(shuō),如果你正需要用Flash來(lái)做某些演示位運(yùn)算課件,或是某些演示程控應(yīng)用,那你會(huì)但愿理解什么是位運(yùn)算符。所謂位運(yùn)算就是指進(jìn)行二進(jìn)制位運(yùn)算。那么,什么是位呢?咱們懂得,計(jì)算機(jī)內(nèi)存是由眾多被稱為“字節(jié)(byte)”單元構(gòu)成。每一種字節(jié)均有一種地址。而一種字節(jié)普通由8個(gè)二進(jìn)制位構(gòu)成,其中最右邊一位被稱為“最低位”,最左邊一位被稱為“最高位”。每一種二進(jìn)制位值不是0就是1。盡管當(dāng)咱們?cè)谟肁ctionScript編程時(shí),如果想使用7這個(gè)數(shù)字,就直接輸入7就可以了。但在咱們PC機(jī)中,這個(gè)數(shù)字7是以4個(gè)字節(jié)來(lái)存儲(chǔ)。事實(shí)上,對(duì)于7這樣整數(shù)而言,用兩個(gè)字節(jié)存儲(chǔ)更經(jīng)濟(jì),但由于ActionScript中是用雙精度浮點(diǎn)數(shù)來(lái)表達(dá)所有數(shù)字,因而,7也會(huì)占用4個(gè)字節(jié),即用32個(gè)二進(jìn)制位來(lái)表達(dá)。讓咱們看看如何把7這個(gè)數(shù)字用二進(jìn)制來(lái)表達(dá)。要把十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),就用十進(jìn)制數(shù)字除以2,獲得別的數(shù),第一次余數(shù)就是二進(jìn)制最低位,第二次余數(shù)就是次低位(即比最低位高一位那個(gè)位),依此類推,直到被除數(shù)不大于2,最后被除數(shù)就是二進(jìn)制最高位。第一次,7除以2,商為3,余數(shù)為1。因而,二進(jìn)制最低位為1。第二次,3除以2,商為1,余數(shù)為1。因而,二進(jìn)制次低位為1。第三次,1不大于2。因而,二進(jìn)制最高位為1。這樣十進(jìn)制數(shù)字7轉(zhuǎn)換成二進(jìn)制數(shù)就是111。如此,這四個(gè)字節(jié)中最右邊一種字節(jié)內(nèi)容是00000111,別的三個(gè)字節(jié)內(nèi)容都是00000000。當(dāng)前,咱們對(duì)數(shù)字二進(jìn)制表達(dá)已經(jīng)基本掌握了,讓咱們看看均有哪些位運(yùn)算符,以及如何用這些運(yùn)算符對(duì)數(shù)字進(jìn)行按位運(yùn)算。按位運(yùn)算符中除了按位“非”(~)外都是二元運(yùn)算符。運(yùn)算符執(zhí)行運(yùn)算&按位“與”。兩個(gè)操作數(shù)中,如果兩個(gè)相應(yīng)位都是1,則該位運(yùn)算成果就為1,否則為0。|按位“或”。兩個(gè)操作數(shù)中,兩個(gè)相應(yīng)位中只要有一種為1,則該位運(yùn)算成果就為1。換句話說(shuō),只有當(dāng)兩個(gè)相應(yīng)位都是0時(shí),該位運(yùn)算成果才為0。^按位“異或”。兩個(gè)操作數(shù)中,如果兩個(gè)相應(yīng)位值相似,則該位運(yùn)算成果就為0,否則就為1。~按位“非”。這是按位運(yùn)算符中唯一一種一元運(yùn)算符,用來(lái)對(duì)一種二進(jìn)制數(shù)按位取反,即將0變?yōu)?,1變?yōu)?。<<左移位。用來(lái)將第一種操作數(shù)中各二進(jìn)制位都向左移動(dòng)由第二個(gè)操作數(shù)中指定位數(shù)。>>右移位。用來(lái)將第一種操作數(shù)中各二進(jìn)制位都向右移動(dòng)由第二個(gè)操作數(shù)中指定位數(shù)。>>>無(wú)符號(hào)右移位。用來(lái)將第一種操作數(shù)中各二進(jìn)制位都向右移動(dòng)由第二個(gè)操作數(shù)中指定位數(shù),且左邊空出位數(shù)都添上0。讓咱們通過(guò)下面某些例子來(lái)更好領(lǐng)悟位運(yùn)算符運(yùn)用(為了使代碼更清晰,我使用某些比較小數(shù)字,并且只用4個(gè)字節(jié)中最后一種字節(jié)來(lái)表達(dá),由于其她三個(gè)字節(jié)都是零):a=3&5;trace(a); //輸出為1。由于3是00000011,而5是00000101,按位“與”成果是:0000001100000101(&)-------------00000001使用按位“與”,你可以把某個(gè)數(shù)字某些指定位值保存下來(lái)。詳細(xì)說(shuō),你可以設(shè)計(jì)一種數(shù)字B,使數(shù)字B中那些與數(shù)字A中你想要保存其值那些位相應(yīng)位值為1,且讓數(shù)字B中別的位值為0,然后讓這兩個(gè)數(shù)字進(jìn)行按位“與”,則運(yùn)算成果就自然保存了數(shù)字A中你想要保存那些位值。例如,有一種數(shù)字01101010,你想把其左起第2、3、6、7、8位值保存下來(lái),則你可以這樣:01101010(這就是數(shù)字A)01100111(這就是你設(shè)計(jì)數(shù)字B)(&)------------01100010(所得成果中保存了你要保存那些位值) 3和5按位“或”成果為7。a=3|5;trace(a); //輸出為7。3和5按位“異或”成果為6。a=3^5;trace(a); //輸出為6。使用按位“異或”可以對(duì)某個(gè)數(shù)字特定位值進(jìn)行翻轉(zhuǎn)。例如,如果有一種數(shù)字01110101,你想使其低4位翻轉(zhuǎn),即1變?yōu)?,0變?yōu)?,則你只需讓它與00001111進(jìn)行按位“異或”即可:0111010100001111(^)-------------- 01111010按位“異或”還可以實(shí)當(dāng)前不借助第三個(gè)變量狀況下互換兩個(gè)變量值。例如,如果a為3,b為5,要互換a和b值,你可以使用下面腳本:a=3;b=5;a=a^b;b=b^a;a=a^b;trace(a);//輸出為5。trace(b);//輸出為3。這是由于b=b^a;這行代碼相稱于b=b^(a^b)=b^a^b=a^b^b=a^0=a。而a=a^b;這行代碼相稱于a=(a^b)^a=a^b^a=b。對(duì)于按位“非”運(yùn)算符(~),需要注意是要把它和負(fù)運(yùn)算符(-)區(qū)別開(kāi)來(lái)。例如,對(duì)3執(zhí)行按位“非”成果是-4,而不是-3。a=~3;trace(a); //輸出為-4。對(duì)某個(gè)數(shù)字執(zhí)行“左移位”運(yùn)算,相稱于對(duì)該數(shù)字進(jìn)行乘法運(yùn)算,左移一位,相稱于對(duì)該數(shù)字乘以2,左移兩位,相稱于對(duì)該數(shù)字乘以22=4。就像下例所示:a=3;a=a<<2;trace(a); //輸出為12。對(duì)某個(gè)數(shù)字執(zhí)行“右移位”運(yùn)算,相稱于對(duì)該數(shù)字進(jìn)行除法運(yùn)算且丟棄余數(shù),右移一位,相稱于對(duì)該數(shù)字除以2且丟棄余數(shù),右移兩位,相稱于對(duì)該數(shù)字除以4且丟棄余數(shù)。就像下例所示:a=9;a=a>>2;trace(a); //輸出為2。需要注意是,如果原先數(shù)字最高位為0,則在右移位時(shí),左側(cè)空出位將被填充0,如果原先數(shù)字最高位為1,則填充1?!盁o(wú)符號(hào)右移位”同“右移位”基本同樣,只是無(wú)論原先數(shù)字最高位為0還是1,在右移位時(shí),左側(cè)空出位都將被填充0。19.4.7賦值運(yùn)算符在FlashActionScript中,你是使用賦值運(yùn)算符來(lái)為變量賦值。賦值運(yùn)算符老祖宗是等號(hào)(=)。在下面你會(huì)看到,除了=外,通過(guò)將=與其她算術(shù)、邏輯和位運(yùn)算符結(jié)合到一起,可以構(gòu)成許多被稱為“復(fù)合賦值運(yùn)算符”賦值運(yùn)算符。但事實(shí)上,這些復(fù)合賦值運(yùn)算符盡管會(huì)使程序代碼變得更簡(jiǎn)短,有時(shí)也能使某些工作變得更容易,但更多時(shí)候,它們會(huì)使你看不清程序邏輯。在使用賦值運(yùn)算符時(shí),有一點(diǎn)需要注意,那就是賦值運(yùn)算符左側(cè)必要是變量或?qū)傩?。這樣代碼是錯(cuò)誤:5++;。運(yùn)算符執(zhí)行運(yùn)算=賦值。將右邊表達(dá)式值放入左邊變量中。++遞增。這是一種一元運(yùn)算符,它對(duì)作為操作數(shù)變量執(zhí)行加1運(yùn)算后又把成果重新賦給該變量。--遞減。這是一種一元運(yùn)算符,它對(duì)作為操作數(shù)變量執(zhí)行減1運(yùn)算后又把成果重新賦給該變量。+=相加并賦值。它對(duì)左邊變量值和右邊表達(dá)式值進(jìn)行加法運(yùn)算,并把運(yùn)算成果重新賦給該變量。-=相減并賦值。它用左邊變量值減去右邊表達(dá)式值,并把運(yùn)算成果重新賦給該變量。*=相乘并賦值。它對(duì)左邊變量值和右邊表達(dá)式值進(jìn)行乘法運(yùn)算,并把運(yùn)算成果重新賦給該變量。/=相除并賦值。它用左邊變量值除以右邊表達(dá)式值,并把運(yùn)算成果重新賦給該變量。%=求模并賦值。它用左邊變量值除以右邊表達(dá)式值,并把所得余數(shù)重新賦給該變量。<<=左移位并賦值。>>=右移位并賦值。>>>=無(wú)符號(hào)右移位并賦值。^=按位“異或”并賦值。|=按位“或”并賦值。&=按位“與”并賦值。對(duì)于這些復(fù)合賦值運(yùn)算符,我只舉一種例子:counter+=10;等效于:counter=counter+10;其她復(fù)合賦值運(yùn)算符用法你猜也能猜到,在此不再贅述。除了=賦值運(yùn)算符外,你用最多也許就是遞增賦值運(yùn)算符(++)和遞減賦值運(yùn)算符(--)了。你經(jīng)常會(huì)把它們用于對(duì)計(jì)數(shù)器變量加1或減1。就象這樣:counter++;上面語(yǔ)句等效于counter=counter+1;。對(duì)于遞增和遞減運(yùn)算符而言,它們有兩種使用格式:預(yù)先遞增(或遞減)格式和滯后遞增(或遞減)格式。兩種格式不同之處是你是將這些運(yùn)算符放置在操作數(shù)前面還是背面,就象這樣++counter或counter--,這會(huì)產(chǎn)生一點(diǎn)微妙但卻非常重要不同。將遞增運(yùn)算符放置在操作數(shù)背面會(huì)遞增counter但“返回”操作數(shù)在遞增發(fā)生前值。當(dāng)你整個(gè)語(yǔ)句只有一種counter++時(shí),這個(gè)微妙差別無(wú)關(guān)緊要。然而,當(dāng)你說(shuō)otherVariable=counter++時(shí),otherVariable將變成counter被遞增前值。相反,如果你說(shuō)otherVariable=++counter,otherVariable將變成counter遞增后值。不能簡(jiǎn)樸說(shuō)這兩種方式哪種好,取決于你目它們都可以被較好運(yùn)用??聪旅胬樱篴=1;b=1;x=a++;y=++b;trace(x);//輸出為1。trace(y);//輸出為2。盡管預(yù)先遞增(或遞減)和滯后遞增(或遞減)之間差別也許看起來(lái)很微妙,但在某一特定情形中,你也許不得不使用預(yù)先遞增或預(yù)先遞減方式。當(dāng)操
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 墻布加盟代銷合同范例
- 泡沫箱銷售合同范例
- 個(gè)人催債合同范例
- 車轉(zhuǎn)讓個(gè)人合同范例
- 業(yè)務(wù)用車租賃合同范例
- 靈芝收購(gòu)合同范例
- 聘請(qǐng)電影合同范例
- 產(chǎn)品押款合同范例
- 資料保管合同范例范例
- 2024北京西城初一(上)期末數(shù)學(xué)(教師版)
- (2024年)中國(guó)傳統(tǒng)文化介紹課件
- 宗親捐款倡議書(shū)
- 蛇年春聯(lián)對(duì)聯(lián)240副
- 廣東省廣州天河區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷含答案
- 江蘇省百校2025屆高三上學(xué)期12月聯(lián)考語(yǔ)文試題(含答案)
- 四川省南充市2023-2024學(xué)年高一上學(xué)期期末考試 政治 含解析
- 寒假安全教育 1
- 江蘇省揚(yáng)州市梅嶺中學(xué)2023-2024學(xué)年七年級(jí)上學(xué)期期末地理試題(含答案)
- 2023-2024學(xué)年廣東省深圳市南山區(qū)七年級(jí)(上)期末地理試卷
- 北京市朝陽(yáng)區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期期末英語(yǔ)試題
評(píng)論
0/150
提交評(píng)論