已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,3.1數(shù)據(jù)類型C#中數(shù)據(jù)類型主要分為兩大類:值類型和引用類型。3.1.1值類型C#中值類型包括3種:簡(jiǎn)單類型、結(jié)構(gòu)類型和枚舉類型。簡(jiǎn)單類型包括整數(shù)類型、浮點(diǎn)類型、小數(shù)類型和布爾類型等。,1.整數(shù)類型整數(shù)類型的數(shù)據(jù)值只能是整數(shù)。數(shù)學(xué)上的整數(shù)可以是負(fù)無窮大到正無窮大,但計(jì)算機(jī)的存儲(chǔ)單元是有限的,因此計(jì)算機(jī)語(yǔ)言所提供的數(shù)據(jù)類型都是有一定范圍的。C#中提供了8種整數(shù)類型,它們的取值范圍如下表所示。,2.浮點(diǎn)類型小數(shù)在C#中采用浮點(diǎn)類型的數(shù)據(jù)來表示,浮點(diǎn)類型的數(shù)據(jù)包含兩種:?jiǎn)尉雀↑c(diǎn)型(float)和雙精度浮點(diǎn)型(double),其區(qū)別在于取值范圍和精度的不同。計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)據(jù)的運(yùn)算速度大大低于對(duì)整數(shù)的運(yùn)算速度,數(shù)據(jù)的精度越高對(duì)計(jì)算機(jī)的資源要求越高,因此在對(duì)精度要求不高的情況下,我們可以采用單精度類型,而在精度要求較高的情況下可以使用雙精度類型。float類型是32位寬,double類型是64位寬。浮點(diǎn)類型數(shù)據(jù)的精度和可接受的值范圍如下:?jiǎn)尉龋喝≈捣秶?1.510-453.41038之間,精度為7位數(shù)。雙精度:取值范圍為+5.0-3241.710308之間,精度為1516位數(shù)。,3小數(shù)類型小數(shù)類型(decimal)類型數(shù)據(jù)是高精度的類型數(shù)據(jù),占用16個(gè)字節(jié)(128位),主要為了滿足需要高精度的財(cái)務(wù)和金融計(jì)算機(jī)領(lǐng)域。小數(shù)類型數(shù)據(jù)的取值范圍和精度如下:小數(shù)類型:取值范圍在+1.010-287.91028之間,精度為29位數(shù)。小數(shù)類型數(shù)據(jù)的范圍遠(yuǎn)遠(yuǎn)小于浮點(diǎn)型,不過它的精確度比浮點(diǎn)型高得多。所以相同的數(shù)字對(duì)于兩種類型來說可能表達(dá)的內(nèi)容并不相同。值得注意的是,小數(shù)類型數(shù)據(jù)的后面必須跟m或者M(jìn)后綴來表示它是decimal類型的,如3.14m、0.28m等,否則就會(huì)被解釋成標(biāo)準(zhǔn)的浮點(diǎn)類型數(shù)據(jù),導(dǎo)致數(shù)據(jù)類型不匹配。,在程序中書寫一個(gè)十進(jìn)制的數(shù)值常數(shù)時(shí),C#默認(rèn)按照如下方法判斷一個(gè)數(shù)值常數(shù)據(jù)屬于哪種C#數(shù)值類型:l如果一個(gè)數(shù)值常數(shù)不帶小數(shù)點(diǎn),如12345,則這個(gè)常的類型是整型。l對(duì)于一個(gè)屬于整型的數(shù)值常數(shù),C#按如下順序判斷該數(shù)的類型:int,uint,long,ulong。l如果一個(gè)數(shù)值常數(shù)帶小數(shù)點(diǎn),如3.14,則該常數(shù)的類型是浮點(diǎn)型中的double類型。如果不希望C#使用上述默認(rèn)的方式來判斷一個(gè)十進(jìn)制數(shù)值常數(shù)的類型,可能通過給數(shù)值常數(shù)加后綴的方法來指定數(shù)值常數(shù)的類型??梢允褂玫臄?shù)值常數(shù)后綴有以下幾種:lu(或者U)后綴:加在整型常數(shù)后面,代表該常數(shù)是uint類型或者ulong類型。具體是其中的哪一種,由常數(shù)的實(shí)際值決定。C#優(yōu)先匹配uint類型。ll(或者L)后綴:加在整型常數(shù)后面,代表該常數(shù)是long類型或者ulong類型。具體是其中的哪一種,由常數(shù)的實(shí)際值決定。C#優(yōu)先匹配long類型。,lul后綴:加在整型常數(shù)后面,代表該常數(shù)是ulong類型。lf(或者F)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是float類型。ld(或者D)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是double類型。lm(或者M(jìn))后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是decimal類型。,舉例如下:138f代表float類型的數(shù)值138.0518u代表uint類型的數(shù)值51836897123ul代表ulong類型的數(shù)值3689712322.1m代表decimal類型的數(shù)值22.112.68代表double類型的數(shù)值12.6836代表int類型的數(shù)值36如果一個(gè)數(shù)值常數(shù)超過了該數(shù)值常數(shù)的類型的所能表示的范圍,C#在對(duì)程序進(jìn)行編譯時(shí),將給出錯(cuò)誤信息。剛開始學(xué)習(xí),不可能一下子掌握這么多數(shù)值類型,先牢記以下幾種:int型:凡是要表示帶符號(hào)的整數(shù)時(shí),先考慮使用int型;uint型:凡是需要不帶符號(hào)的整數(shù)時(shí),先考慮使用uint型;double型:凡是需要做科學(xué)計(jì)算,并且精度要求不是很高時(shí),考慮使用double型。,4.字符類型C#提供的字符類型數(shù)據(jù)按照國(guó)際上公認(rèn)的標(biāo)準(zhǔn),采用Unicode字符集。一個(gè)Unicode字符的長(zhǎng)度為16位(bit),它可以用來表示世界上大部分語(yǔ)言種類。所有Unicode字符的集合構(gòu)成字符類型。字符類型的類型標(biāo)識(shí)符是char,因此也可稱為char類型。凡是在單引號(hào)中的一個(gè)字符,就是一個(gè)字符常數(shù),如下所示:a、p、*、0、8在表示一個(gè)字符常數(shù)時(shí),單引號(hào)內(nèi)的有效字符數(shù)量必須且只能是一個(gè),并且不能是單引號(hào)或者反斜杠()。,為了表示單引號(hào)和反斜杠等特殊的字符常數(shù),C#提供了轉(zhuǎn)義符,在需要表示這些特殊常數(shù)的地方,可以使用這些轉(zhuǎn)義符來替代字符。如下表所示。,C#常用的轉(zhuǎn)義符,如Console.WriteLine(“Hello,”+”+”打印出單引號(hào)“+”“);例:usingSystem;classStrDemostaticvoidMain()Console.WriteLine(“FirstLinenSecondLine”);Console.WriteLine(“AtBtC”);Console.WriteLine(“DtEtF”);,5布爾類型布爾類型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類型的類型標(biāo)識(shí)符是bool。布爾類型常數(shù)只有兩種值:true(代表“真”)和false(代表“假”)。布爾類型數(shù)據(jù)主要應(yīng)用在流程控制中。程序員往往通過讀取或設(shè)定布爾類型數(shù)據(jù)的方式來控制程序的執(zhí)行方向。,3.1.2引用類型引用類型是C#中和值類型并列的類型,引用類型所存儲(chǔ)的實(shí)際數(shù)據(jù)是當(dāng)前引用值的地址,因此引用類型數(shù)據(jù)的值會(huì)隨所指向的值的不同而變化,同一個(gè)數(shù)據(jù)也可以有多個(gè)引用。這與簡(jiǎn)單類型數(shù)據(jù)是不同的,簡(jiǎn)單類型數(shù)據(jù)存儲(chǔ)的是自身的值,而引用類型存儲(chǔ)的是將自身的值直接指向到某個(gè)對(duì)象的值。C#中引用類型數(shù)據(jù)有4種:類類型(class-type)、數(shù)組類型(array-type)、接口類型(interface-type)和委托類型(delegate-type)。,1.object類object類是系統(tǒng)提供的基類型,是所有類型的基類,C#中所有的類型都直接或間接派生于對(duì)象類型。因此,對(duì)于任一個(gè)object變量,均可以賦以任何類型的值。inta=8;objectobj1;obj1=x;objectobj2=x;對(duì)于object類型的變量,聲明必須使用object關(guān)鍵字。,2.string類一個(gè)字符串是被雙引號(hào)包含的一系列字符。例如,“howareyou!”就是一個(gè)字符串。string類是專門用于對(duì)字符串進(jìn)行操作的。字符串在實(shí)際應(yīng)用中非常廣泛,字符串之間的運(yùn)算也是非常方便的。如:stringstr1=中國(guó),;stringstr2=你好??;stringstr3=str1+str2;/這相當(dāng)于str3=中國(guó),你好!charc=str30;/取出str3的第一個(gè)字符,即“中”字。,C#支持以下兩種形式的字符串常數(shù)。(1)常規(guī)字符串常數(shù)放在雙引號(hào)間的一串字符,就是一個(gè)常規(guī)字符串常數(shù),比如:“thisisatest”“C#程序設(shè)計(jì)教程”除了普通的字符,一個(gè)字符串常數(shù)也能包含一個(gè)或多個(gè)前面描述的轉(zhuǎn)義符。例如,看看下面的程序,它使用了轉(zhuǎn)義符。例:/轉(zhuǎn)義符在字符串中的使用示范usingSystem;classStrDemostaticvoidMain()Console.WriteLine(First0linenSecond0line);Console.WriteLine(你好a);Console.WriteLine(“1t2t3);Console.WriteLine(“*t*t*”);,例:usingSystem;classStringDemopublicstaticvoidMain()stringstr1=“Astring”;stringstr2=Anotherstring.;Console.WriteLine(“0n1”,str1,str2);,運(yùn)行結(jié)果如下:,(2)逐字字符串常數(shù)逐字字符串常數(shù)以開頭,后跟一對(duì)雙引號(hào),在雙引號(hào)中放入字符。如:“計(jì)算機(jī)”“Howareyou!”逐字字符串常數(shù)同常規(guī)字符串常數(shù)的區(qū)別在于,在逐字字符串常數(shù)的雙引號(hào)中,每個(gè)字符都代表其最原始的意義,在逐字字符串常數(shù)中沒有轉(zhuǎn)義字符。也就是說,逐字字符串常數(shù)雙引號(hào)內(nèi)的內(nèi)容在被接受時(shí)是不變的,并且可以跨越多行。唯一的例外是,如果要包含雙引號(hào)(),就必須在一行中使用兩個(gè)雙引號(hào)()。,stringstr1;/定義字符串類型stringstr2=hello,world;/規(guī)則字符串常數(shù):hello,worldstringstr3=hello,world;/逐字字符串常數(shù):hello,worldstringstr4=hellotworld;/helloworldstringstr5=hellotworld;/hellotworldstringstr6=“HesaidHellotoyou;/TomsaidHellotoyoustringstr7=“HesaidHellotoyou;/TomsaidHellotoyou,簡(jiǎn)單來說,規(guī)則字符串要對(duì)字符串中的轉(zhuǎn)義符進(jìn)行解釋,而逐字字符串除了對(duì)雙引號(hào)進(jìn)行解釋外,對(duì)其他字符,用戶定義成什么樣,顯示結(jié)果就是什么樣。,例:/逐字字符串常數(shù)實(shí)例usingSystem;classTeststaticvoidMain()Console.WriteLine(Thisisaverbatimstringliteralthatspansseverallines.);Console.WriteLine(Hereissometabbedoutput:12345678);Console.WriteLine(Programmerssay,IlikeC#);,運(yùn)行結(jié)果如下:,3.1.3類型轉(zhuǎn)換數(shù)據(jù)類型在一定條件下是可以相互轉(zhuǎn)換的,如將int型數(shù)據(jù)轉(zhuǎn)換成double型數(shù)據(jù)。C#允許使用兩種轉(zhuǎn)換的方式:隱式轉(zhuǎn)換(implicitconversions)和顯式轉(zhuǎn)換(explicitconversions)。1.隱式轉(zhuǎn)換隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。在隱式轉(zhuǎn)換過程中,編譯器不需要對(duì)轉(zhuǎn)換進(jìn)行詳細(xì)的檢查就能安全地執(zhí)行轉(zhuǎn)換,例如數(shù)據(jù)從int類型到long類型的轉(zhuǎn)換。隱式數(shù)據(jù)轉(zhuǎn)換的使用方法如下:inta=8;/a為整型數(shù)據(jù)longb=a;/b為長(zhǎng)整型數(shù)據(jù)floatc=a;/c為單精度浮點(diǎn)型數(shù)據(jù),2顯式轉(zhuǎn)換顯式轉(zhuǎn)換又叫強(qiáng)制類型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換需要用戶明確地指定轉(zhuǎn)換類型,一般在不存在該類型的隱式轉(zhuǎn)換的時(shí)候才使用。顯式轉(zhuǎn)換可以將一數(shù)值類型強(qiáng)制轉(zhuǎn)換成另一種數(shù)值類型,格式如下:(類型標(biāo)識(shí)符)表達(dá)式意義為:將表達(dá)式的值的類型轉(zhuǎn)換為類型標(biāo)識(shí)符的類型。比如:(int)3.14/把double類型的3.14轉(zhuǎn)換成int類型需要提醒注意以下幾點(diǎn):(1)顯式轉(zhuǎn)換可能會(huì)導(dǎo)致錯(cuò)誤。進(jìn)行這種轉(zhuǎn)換時(shí)編譯器將對(duì)轉(zhuǎn)換進(jìn)行溢出檢測(cè)。如果有溢出說明轉(zhuǎn)換失敗,就表明源類型不是一個(gè)合法的目標(biāo)類型。轉(zhuǎn)換當(dāng)然無法進(jìn)行。(2)對(duì)于從float,double,decimal到整型數(shù)據(jù)的轉(zhuǎn)換,將通過舍入得到最接近的整型值,如果這個(gè)整型值超出目標(biāo)域,則出現(xiàn)轉(zhuǎn)換異常。比如:(int)6.28m轉(zhuǎn)換的結(jié)果為6。而如果將float的數(shù)據(jù)3e25轉(zhuǎn)換成整數(shù),語(yǔ)句如下:(int)3e25f則將產(chǎn)生溢出錯(cuò)誤,因?yàn)?e25超過了int類型所能表示的范圍。,3.1.4裝箱和拆箱裝箱(boxing)和拆箱(unboxing)是C#類型系統(tǒng)中重要的概念。它允許將任何類型的數(shù)據(jù)轉(zhuǎn)換為對(duì)象,同時(shí)也允許任何類型的對(duì)象轉(zhuǎn)換到與之兼容的數(shù)據(jù)類型,其實(shí)拆箱是裝箱的逆過程。1裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換是指將一個(gè)值類型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個(gè)對(duì)象類型(object)的數(shù)據(jù)。把一個(gè)值類型裝箱,就是創(chuàng)建一個(gè)object類型的實(shí)例,并把該值類型的值復(fù)制給該這個(gè)object。例如:下面的兩條語(yǔ)句就執(zhí)行了裝箱轉(zhuǎn)換:intk=100;objectobj=k;上面的兩條語(yǔ)句中,第1條語(yǔ)句先聲明一個(gè)整型變量k并對(duì)其賦值,第2條語(yǔ)句則先創(chuàng)建一個(gè)object類型的實(shí)例obj,然后將k的值復(fù)制給obj。,在執(zhí)行裝箱轉(zhuǎn)換時(shí),也可以使用顯式轉(zhuǎn)換,如:intk=100;objectobj=(object)k;例:在程序中執(zhí)行裝箱轉(zhuǎn)換,程序代碼如下:usingSystem;classBoxingDemostaticvoidMain()Console.WriteLine(執(zhí)行裝箱轉(zhuǎn)換:);intk=200;objectobj=k;k=300;Console.WriteLine(obj=0,obj);Console.WriteLine(k=0,k);,2拆箱轉(zhuǎn)換是指將一個(gè)對(duì)象類型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個(gè)值類型數(shù)據(jù)。拆箱操作包括分為兩步:首先檢查對(duì)象實(shí)例,確保它是給定值類型的一個(gè)裝箱值,然后把實(shí)例的值復(fù)制到值類型數(shù)據(jù)中。例如:下面兩條語(yǔ)句就執(zhí)行了拆箱轉(zhuǎn)換:objectobj=228;intk=(int)obj;拆箱轉(zhuǎn)換需要(而且必須)執(zhí)行顯式轉(zhuǎn)換,這是它與裝箱轉(zhuǎn)換的不同之處。,例:在程序中使用拆箱轉(zhuǎn)換,程序代碼如下:usingSystemclassUnboxingDemostaticvoidMain()intk=228;objectobj=k;/裝箱轉(zhuǎn)換intj=(int)obj;/拆箱轉(zhuǎn)換Console.WriteLine(k=0tobj=1tj=2,k,obj,j);,3.2.1常量在C#中,常量在程序的運(yùn)行過程中其值是不能改變的,例如,數(shù)字100就是一個(gè)常量,這樣的常量一般被稱作常數(shù)??梢酝ㄟ^關(guān)鍵字const來聲明常量,格式如下:const類型標(biāo)識(shí)符常量名=表達(dá)式;常量名必須是C#的合法標(biāo)識(shí)符,在程序中通過常量名來訪問該常量。類型標(biāo)識(shí)符指示了所定義的常量的數(shù)據(jù)類型,而表達(dá)式的計(jì)算結(jié)果是所定義的常量的值。如下例所示:constdoublePI=3.14159265;上面的語(yǔ)句定義了一個(gè)double型的常量PI,它的值是3.14159265。,3.2常量與變量,常量有如下特點(diǎn):l在程序中,常量只能被賦予初始值。一旦賦予一個(gè)常量初始值,這個(gè)常量的值在程序的運(yùn)行過程中就不允許改變,即無法對(duì)一個(gè)常量賦值。l定義常量時(shí),表達(dá)式中的運(yùn)算符對(duì)象只允許出現(xiàn)常量和常數(shù),不能有變量存在。例如:intb=30;constinta=60;constintk=b+20;/錯(cuò)誤,表達(dá)式中不允許出現(xiàn)變量constintd=a+60;/正確,因?yàn)閍是常量a=100;/錯(cuò)誤,不能修改常量的值,3.2.2變量變量是程序運(yùn)行過程中用于存放數(shù)據(jù)的存儲(chǔ)單元。變量的值在程序的運(yùn)行過程中是可以改變的。1變量的定義在定義變量的時(shí)候,首先必須給每一個(gè)變量起名,稱為變量名,以便區(qū)分不同的變量,在計(jì)算機(jī)中,變量名代表存儲(chǔ)地址。C#的變量名必須是合法的C#標(biāo)識(shí)符。比如,av和Index都是合法的變量名。C#中采用如下格式定義一個(gè)變量:類型標(biāo)識(shí)符變量名1,變量名2,,例:floatfsum;stringstrName;chara;intj;注意:C#規(guī)定,任何變量在使用前,必須先定義,后使用。,2變量的賦值變量本身只是一個(gè)能保存某種類型的具體數(shù)據(jù)的內(nèi)存單元(這里所說的“內(nèi)存單元”不一定以字節(jié)為單位),對(duì)于程序而言,可以使用變量名來訪問這個(gè)具體的內(nèi)存單元。變量的賦值,就是將數(shù)據(jù)保存到變量中的過程。在C#中,給一個(gè)變量賦值的格式如下:變量名=表達(dá)式;比如,事先定義了一個(gè)double型的變量nAverage和一個(gè)int型的變量nAgeSum:doublenAverage;intnAgeSum;如果要給nAgeSum變量賦予數(shù)值210,應(yīng)該寫成:nAgeSum=210;,在對(duì)變量進(jìn)行賦值時(shí),表達(dá)式的值的類型必須同變量的類型相同。stringsName;intnScore;則以下賦值是正確的:sName=Jack;sName=Tom;nScore=98;但是,以下賦值是錯(cuò)誤的:sName=5;/不能將整數(shù)賦予字符串對(duì)象nScore=Hello;/不能字符串賦予整型變量,3.變量的初始化在定義變量的同時(shí),可以對(duì)變量賦值,稱為變量的初始化。在C#中,對(duì)變量進(jìn)行初始化的格式如下:類型標(biāo)識(shí)符變量名=表達(dá)式;例如:doublenScore=98.5;這代表定義一個(gè)double型變量nScore,并將其賦予初始值98.5。,3.3運(yùn)算符和表達(dá)式3.3.1運(yùn)算符運(yùn)算符是表示各種不同運(yùn)算的符號(hào)。C#運(yùn)算符可以分為以下幾類:算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符和其他運(yùn)算符。1算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于對(duì)操作數(shù)進(jìn)行算術(shù)運(yùn)算。C#的算術(shù)運(yùn)算符同數(shù)學(xué)中的算術(shù)運(yùn)算符是很相似的。下表列出了C#中允許使用的所有運(yùn)算符。,表C#算術(shù)運(yùn)算符,盡管+、-、*和/這些運(yùn)算符的意義和數(shù)學(xué)上的運(yùn)算符是一樣的。但是在一些特殊的環(huán)境下,有一些特殊的解釋。首先,當(dāng)對(duì)整數(shù)進(jìn)行“/”運(yùn)算時(shí),余數(shù)都被舍去了。例如,10/3在整數(shù)除法中等于3??梢酝ㄟ^模運(yùn)算符%來獲得這個(gè)除法的余數(shù)。運(yùn)算符%可以應(yīng)用于整數(shù)和浮點(diǎn)類型,例如,10%3的結(jié)果是1,10.0%3.0的結(jié)果也是1。,例:/%運(yùn)算符的示例usingSystem;classModDemostaticvoidMain()intiresult,irem;doubledreult,drem;iresult=10/3;irem=10%3;dresult=10.0/3.0;drem=10.0%3.0;Console.WriteLine(10/3=0t10%3=1,iresult,irem);Console.WriteLine(10.0/3.0=0t10.0%3.0=1,dresult,drem);,程序的輸出如下所示:10/3=310%3=110.0/3.0=3.3333333333333310.0%3.0=1,C#還有兩種特殊的算術(shù)運(yùn)算符:+(自增運(yùn)算符)和-(自減速運(yùn)算符),其作用是使變量的值自動(dòng)增加1或者減少1。因此,x=x+1和x+一樣的;x=x-1和x-是一樣的。自增和自減運(yùn)算符既可以在操作數(shù)前面(前綴),也可以在操作數(shù)后在(后綴)。例如,x=x+1;可以被寫成+x;/前綴格式或者x+;/后綴格式當(dāng)自增或自減運(yùn)算符用在一個(gè)較大的表達(dá)式中一部分時(shí),存在著重要的區(qū)別。當(dāng)一個(gè)自增或自減運(yùn)算符在它的操作數(shù)前面時(shí),C#將在取得操作數(shù)的值前執(zhí)行自增或自減操作,并將其用于表達(dá)式的其他部分。如果運(yùn)算符在操作數(shù)的后面,C#將先取得操作數(shù)的值,然后進(jìn)行自增或自減運(yùn)算。,比如下面的例子:x=16;y=+x;在這種情況下,y被賦值為17,但是,如果代碼如下所寫:x=16;y=x+;那么y被賦值為16。在這兩種情況下,x都被賦值為11,不同之處在于發(fā)生的時(shí)機(jī)。自增運(yùn)算符和自減運(yùn)算符發(fā)生的時(shí)機(jī)有非常重要的意義。,例:演示自增運(yùn)算符。usingSystem;classTeststaticvoidMain()intx=2;inty=x+;Console.WriteLine(y=0,y);y=+x;Console.WriteLine(y=0,y);,程序說明:第一次先使用后自增,所以輸出2,第二交先自增后使用,所以輸出4。注意:+、-只能用變量,而不能用于常量或表達(dá)式,例如12+或-(x+y)都是錯(cuò)誤的。,2賦值運(yùn)算符賦值運(yùn)算符用于將一個(gè)數(shù)據(jù)賦予一個(gè)變量,賦值操作符的左操作數(shù)必須是一個(gè)變量,賦值結(jié)果是將一個(gè)新的數(shù)值存放在變量所指示的內(nèi)存空間中。其中“=”是簡(jiǎn)單的賦值運(yùn)算符,它的作用是將右邊的數(shù)據(jù)賦值給左邊的變量,數(shù)據(jù)可以是常量,也可以是表達(dá)式。例如,x=8或者x=9-x都是合法的,它們分別執(zhí)行了一次賦值操作。,表C#的賦值運(yùn)算符,復(fù)合賦值運(yùn)算符的運(yùn)算非常簡(jiǎn)單,例如x*=5就等價(jià)于x=x*5,它相當(dāng)于對(duì)變量進(jìn)行一次自乘操作。復(fù)合賦值運(yùn)算符的結(jié)合方向?yàn)樽杂蚁蜃?。同樣,也可以把表達(dá)式的值通過復(fù)合賦值運(yùn)算符賦予變量,這時(shí)復(fù)合賦值運(yùn)算右邊的表達(dá)式是作為一個(gè)整體參加運(yùn)算的,相當(dāng)于表達(dá)式有括號(hào)。例如,a%=b*2-5相當(dāng)于a%=(b*2-5),它與a=a%(b*2-5)是等價(jià)的。C#語(yǔ)言可以對(duì)變量進(jìn)行連續(xù)賦值,這時(shí)賦值操作符是右關(guān)聯(lián)的,這意味著從右向左運(yùn)算符被分組。如x=y=z等價(jià)于x=(y=z)。,3.關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于在程序中比較兩個(gè)值的大小,關(guān)系運(yùn)算的結(jié)果類型是布爾型,也就說,結(jié)果不是true就是false。一個(gè)關(guān)系運(yùn)算符兩種的運(yùn)算對(duì)象如果是數(shù)值類型的對(duì)象,則比較的是兩個(gè)數(shù)的大??;如果是字符型對(duì)象,則比較的是兩個(gè)字符的Unicode編碼的大小,比如:字符x的Unicode編碼小于y,則關(guān)系表達(dá)式x5-2(結(jié)果是false),表C#的關(guān)系運(yùn)算符,例:在程序中使用算術(shù)運(yùn)算和關(guān)系運(yùn)算,程序代碼如下:usingSystem;classRelaOprstaticvoidMain()inta=100;intx=60;inty=70;intb;b=x+y;boolj;j=ab;Console.WriteLine(“abis0”,j);,該程序運(yùn)行后,輸出結(jié)果為:abisFalse,4邏輯運(yùn)算符邏輯運(yùn)算符用于表示兩個(gè)布爾值之間的邏輯關(guān)系,邏輯運(yùn)算結(jié)果是布爾類型。邏輯非運(yùn)算的結(jié)果是原先的運(yùn)算結(jié)果的逆,即:如果原先運(yùn)算結(jié)果為false,則經(jīng)過邏輯非運(yùn)算后,結(jié)果為true;原先為true則,結(jié)果為false。邏輯與運(yùn)算含義是,只有兩個(gè)運(yùn)算對(duì)象都為true,結(jié)果才為true;只要其中有一個(gè)是false,結(jié)果就為false。邏輯或運(yùn)算含義是,只要兩個(gè)運(yùn)算對(duì)象中有一個(gè)是true,結(jié)果就為true,只有兩個(gè)條件均為false,結(jié)果才為false。,表C#的邏輯運(yùn)算符,當(dāng)需要多個(gè)判定條件時(shí),可以很方便地使用邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來。比如,在表達(dá)式xyboolisTest=kisint;/isTest=true(3)sizeof運(yùn)算符sizeof運(yùn)算符獲得值類型數(shù)據(jù)在內(nèi)存占用的字節(jié)數(shù)。sizeof運(yùn)算符的使用方法如下:sizeof(類型標(biāo)識(shí)符)它的結(jié)果是一個(gè)整數(shù),這個(gè)整數(shù)代表字節(jié)數(shù)。比如:sizeof(int)/結(jié)果是4。因?yàn)槊總€(gè)int型變量占用4個(gè)字節(jié)。,(4)typeof運(yùn)算符typeof運(yùn)算符用于獲得一個(gè)對(duì)象的類型。(5)checked和unchecked運(yùn)算符這兩個(gè)運(yùn)算符用于控制整數(shù)算術(shù)運(yùn)算中當(dāng)前環(huán)境的溢出情況。checked用于檢測(cè)某些操作的溢出條件,下面代碼試圖分配不符合short變量范圍的值,引發(fā)系統(tǒng)錯(cuò)誤:shortval1=20000,val2=20000;shortmyshort=checked(short)(val1+val2);/出現(xiàn)錯(cuò)誤借助于uncheked運(yùn)算符,就可以保證即使溢出,也會(huì)忽略錯(cuò)誤,接受結(jié)果,例如:shortval1=2000,val2=2000;shortmyshort=checked(short)(val1+val2);/出現(xiàn)錯(cuò)誤,/但是被忽略,3.3.2表達(dá)式表達(dá)式是運(yùn)算符、常量和變量等組成的符號(hào)序列。1算術(shù)表達(dá)式算術(shù)表達(dá)式是用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來的符合語(yǔ)法規(guī)則的式子,其中運(yùn)算對(duì)象可以是常量、變量,也可以是函數(shù)。在一個(gè)算術(shù)表達(dá)式中,算術(shù)運(yùn)算有一定的優(yōu)先運(yùn)算順序。在求表達(dá)式的值時(shí),要按照運(yùn)算符的優(yōu)先級(jí)別進(jìn)行計(jì)算。由于乘法、除法運(yùn)算的優(yōu)先級(jí)別高于加法和減法運(yùn)算,所以在求算術(shù)表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年部編版本二年級(jí)下冊(cè)《語(yǔ)文園地五》教案設(shè)計(jì)
- 餐巾折花培訓(xùn)
- 餐廳菜品銷售培訓(xùn)
- 2026校招:AI工程師真題及答案
- 2026中考沖刺動(dòng)員大會(huì)校長(zhǎng)發(fā)言稿:沖刺百日我們與你共赴前程
- 餐廳正能量培訓(xùn)
- (完整版)大學(xué)概率統(tǒng)計(jì)試題及答案
- 《旅游法規(guī)》試題及答案
- 體外診斷試劑注冊(cè)與備案管理辦法考試及答案
- 飛行垂直間隔課件
- 2026湖南衡陽(yáng)日?qǐng)?bào)社招聘事業(yè)單位人員16人備考題庫(kù)(含答案詳解)
- 室內(nèi)工裝設(shè)計(jì)方案匯報(bào)
- 老年人食品藥品誤食防護(hù)指南
- 血常規(guī)散點(diǎn)圖解析
- 胸痛患者急救流程
- 中頻治療部位示意圖
- 第2章一元一次不等式和一元一次不等式組 單元綜合練習(xí)題 2023-2024學(xué)年北師大版八年級(jí)數(shù)學(xué)下冊(cè)
- 六年級(jí)數(shù)學(xué)上冊(cè)解決問題60道
- 2021年山東高考英語(yǔ)試卷-(及答案)
評(píng)論
0/150
提交評(píng)論