




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章C#程序設(shè)計(jì)基礎(chǔ)在深入討論C#面向?qū)ο蟪绦蛟O(shè)計(jì)之前,首先需要掌握C#語言的基本語法結(jié)構(gòu)。本章將介紹C#的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,以及流程控制語句。3.1數(shù)據(jù)類型數(shù)據(jù)類型是對客觀數(shù)據(jù)對象的抽象,它將數(shù)據(jù)和對數(shù)據(jù)的操作封裝為一個整體。C#語言中的數(shù)據(jù)類型分為值類型和引用類型兩大類。值類型包括整數(shù)、字符、實(shí)數(shù)、布爾數(shù)據(jù)等簡單值類型,以及結(jié)構(gòu)和枚舉兩種復(fù)合值類型;引用類型包括類、接口、委托和數(shù)組。這些類型在本質(zhì)上都是面向?qū)ο蟮摹?.1.1C#數(shù)據(jù)類型C#語言包含13種數(shù)值類型,如表3-1所示。這些內(nèi)部類型由C#中的關(guān)鍵字定義,它們可以被任何C#程序使用。數(shù)值類型一詞表明這些類型的變量有它們對應(yīng)
2、的數(shù)值。這不同于引用類型,引用類型變量包含對實(shí)際值的引用。因此,值類型更類似其他一些程序設(shè)計(jì)語言(如C+)中的數(shù)據(jù)類型。表3-1C#的數(shù)值類型含義bool布爾邏輯值(true和false)byte8位無符號整數(shù)char字符數(shù)據(jù)類型decimal十進(jìn)制數(shù)值類型double雙精度浮點(diǎn)類型float單精度浮點(diǎn)類型int整型long長整型sbyte8位有符號整數(shù)short短整型uint無符號整型ulong無符號長整型ushort無符號短整型C#語言中嚴(yán)格限定了每一種數(shù)值類型的取值范圍,由于可移植性的需要,C#在這一點(diǎn)上是強(qiáng)制的。例如:int類型在所有執(zhí)行環(huán)境中都是相同的,不需要而外編寫代碼來適應(yīng)特定的
3、平臺。盡管在某些特定環(huán)境中,嚴(yán)格指定數(shù)值類型的大小可能導(dǎo)致一些性能的損失,但為使程序具備可移植性,這是非常必要的。3.1.2整型C#定義了8中整數(shù)類型:byte、sbyte、short、ushort、int、uint、long、ulong。它們的位寬度和取值范圍如表3-2所示。表3-2整數(shù)類型的位寬度和取值范圍位寬度取值范圍byte80255sbyte8-128127short16-3276832767ushort16065535int32-21474836482147483647uint3204294967295long64-922337203685477580892233720368547
4、75807ulong64018446744073709551615如上表所示,C#定義了各種整數(shù)類型的有符號形式和無符號形式。有符號整數(shù)和無符號整數(shù)的不同在于對整數(shù)高階位的處理方式。對于有符號整數(shù),C#編譯器將產(chǎn)生代碼,把整數(shù)的高階位作為符號位。如果符號位為0,那么此數(shù)為正數(shù);如果符號位為1,那么此數(shù)為負(fù)數(shù)。最常用的整數(shù)類型是int類型。int類型的變量通常在控制循環(huán)、索引數(shù)組和常見的整數(shù)運(yùn)算中。但當(dāng)整數(shù)的取值范圍超出int類型的取值范圍時,可以有多種選擇。如果要存儲的是無符號數(shù),可以是uint類型;對于數(shù)值較大的有符號數(shù)可以使用long類型;對于取值更大的無符號數(shù)可以使用ulong類型。3.
5、1.3浮浮點(diǎn)類型可以表示帶有小數(shù)部分的數(shù)據(jù)。浮點(diǎn)類型有兩種:float和double,分別表示單精度數(shù)和雙精度數(shù)。float類型的寬度為32位,其取值范圍大約是1.5E-3241.7E+308,而double類型的寬度為64位,取值范圍大約為5E-3241.7E+308。例如:編寫程序計(jì)算圓的面積。/P3-1usingSystem;namespaceP3_1classGetAreapublicstaticvoidMain()doubler;doublearea;r=5.0;area=3.1415926*r*r;Console.WriteLine(areaofcircleis:+area);)說
6、明:程序中GetArea、r、area都是標(biāo)識符。標(biāo)識符是為類、對象、變量和方法等指定的名稱。C#中標(biāo)識符通常是由字母、或者下劃線開頭,后跟字母、數(shù)字或者下劃線組成的字符序列。另外,C#語言是大小寫敏感的,例如myvar和Myvar是兩個不同的標(biāo)識符。關(guān)鍵字不能作為標(biāo)識符使用,但是在關(guān)鍵字的前面加上之后就可以作為標(biāo)識符使用,但是這樣做不是一種好的習(xí)慣。C#語言的關(guān)鍵字請參考附錄。3.1.4decimal類型decimal類型通常用于貨幣計(jì)算,它使用128位來表示1E-287.9E+28之間的數(shù)值。眾所周知,正常的浮點(diǎn)運(yùn)算涉及到小數(shù)時常引發(fā)各種舍入誤差。decimal類型消除了這種誤差,并且能夠
7、精確地表示28位有效數(shù)字。這種在表示小數(shù)時不出現(xiàn)舍入誤差的能力,使得它在被用于財務(wù)計(jì)算時非常有效。例如,下面的程序是根據(jù)購買商品的數(shù)量,計(jì)算打折后應(yīng)支付的費(fèi)用。usingSystem;namespaceP3_2classusedecimalpublicstaticvoidMain()decimalprice,discount,paymoney;intnum;price=19.95m;discount=0.15M;num=15;paymoney=price*num*(1-discount);Console.WriteLine(themoneyshouldpayis:+paymoney);)注意,
8、上例中的小數(shù)常量后面有一個m或M,這是必要的,否則這些數(shù)將被認(rèn)為是標(biāo)準(zhǔn)的浮點(diǎn)常量。3.1.5字符類型不同于多數(shù)其他計(jì)算機(jī)語言(如C+),C#語言的字符不是8位,而是采用Unicode編碼的16位字符類型。Unicode定義的字符集大到足以表示所有人類語言中出現(xiàn)的字符。C#中的char類型是無符號的16位類型,其取值范圍是065535??梢越o字符類型的變量賦值,此時字符值需要用單引號括起來。例如:charch;ch=A;雖然C#的char類型定義為整數(shù)類型,但是它不能任意和整數(shù)混合使用。這是因?yàn)闆]有從整數(shù)類型到char類型的自動類型轉(zhuǎn)換。例如,下面的代碼是非法的。charch;ch=10;/錯誤
9、3.1.6布爾類型布爾類型(bool)表示邏輯值真或假。C#語言采用保留字true和false來表示真和假。因此,布爾類型的變量或表達(dá)式將只能取這兩個值中的一個。不同于其他計(jì)算機(jī)語言,C#沒有定義布爾類型和整型之間的轉(zhuǎn)換。例如,1不能轉(zhuǎn)換為true,0不能轉(zhuǎn)換為falseo例如,下面的程序演示了布爾數(shù)據(jù)的使用。usingSystem;namespaceP3_3classuseboolpublicstaticvoidMain()boolb=false;Console.WriteLine(b);b=true;Console.WriteLine(b);Console.WriteLine(1015);
10、3.1.7輸出格式控制到目前為止,當(dāng)使用WriteLine輸出數(shù)據(jù)時,數(shù)據(jù)總是以默認(rèn)的格式顯示輸出。但是,C#語言提供了一種復(fù)雜的格式控制機(jī)制, 允許用戶自定義數(shù)據(jù)的顯示方式。 本書后面將會討論格式化的I/O,這里先簡單介紹一些格式化的常用選項(xiàng)。使用這些選項(xiàng),將能夠指定WriteLine的輸出格式,從而產(chǎn)生更令人滿意的結(jié)果。當(dāng)一個WriteLine語句要輸出多個數(shù)據(jù)項(xiàng)時,用“+”將各個數(shù)據(jù)項(xiàng)連接起來,如下所示。Console.WriteLine(youordered+2+Itemsat$“+3+each);Console.WriteLine(Hereis10/3”+10.0/3.0);雖然,上
11、面的方式使用很方便,但是不能控制數(shù)值的輸出精度和小數(shù)位數(shù)。要控制數(shù)字?jǐn)?shù)據(jù)的格式,需要使用WriteLine語句的第二種形式,它允許嵌入格式化信息,如下所示:WriteLine(formatstring”,arg0,arg1,arg2,argn);這種形式中,WriteLine的參數(shù)由逗號隔開,而不是+。格式化字符串(formatstring)包含兩項(xiàng)內(nèi)容:規(guī)則和格式說明符。格式說明符采用如下的基本形式:argnum,width:fmt其中,argnum中指定要顯示的參數(shù)個數(shù)(從0開始)。width中指定字段的最小寬度,fmt中指定格式。執(zhí)行過程中,當(dāng)在格式字符串中出現(xiàn)格式說明符時,argnum
12、中的數(shù)字指定了相應(yīng)的參數(shù)argnum所在位置由所對應(yīng)的參數(shù)取代,即格式說明符定義了參數(shù)顯示位置。width和fmt都是可選項(xiàng)。因此,在其最簡形式中,格式說明符只簡單地表明顯示哪個參數(shù)。例如0表示arg0,1表示argl。例如:Console.WriteLine(Februaryhas0or1days.”,28,29);輸出結(jié)果是:Februaryhas28or29days.下面給出指定了最小字段寬度的示例:Console.WriteLine(Februaryhas0,5or1,10days.”,28,29);輸出結(jié)果是:Februaryhas28or29days.從上面的輸出可以看到,這里使用
13、空格來確保輸出達(dá)到最小字段的寬度。如果實(shí)際輸出的數(shù)值大于指定的最小寬度,則按實(shí)際的寬度輸出。下面給出使用格式說明符fmt的例子:Console.WriteLine(Hereis10/3:0:#.#,10.0/3.0);輸出如下:Hereis10/3:3.33本例中的#.#,是控制輸出小數(shù)時只輸出兩位小數(shù)。又如:Console.WriteLine(0:#,#.#,123456.567);輸出如下:123,456.57如果要用美元和美分的格式顯示數(shù)值,則可以使用C格式說明符,例如:decimalbalance;balance=12323.09m;Console.WriteLine(Currence
14、balanceis0:Cbalance);輸出結(jié)果是:Currencebalanceis$12,323.093.1.8直接量C#中,直接量是指以固定格式表示的固定數(shù)值。例如,常數(shù)100是一個直接量。直接量通常也稱為常量。C#中的常量可以是任意數(shù)值類型的,每種不同類型的常量有不同的表示方式。下面進(jìn)行說明。字符常量是用單引號括起來的單個字符。例如,A,%,a。整數(shù)常量是不包含小數(shù)部分的數(shù)。例如,10,0,-100等。浮點(diǎn)常量是帶小數(shù)點(diǎn)的數(shù)。例如,11.23,-96.3,0.0等。由于C#是一種強(qiáng)類型語言,所以直接量也有類型。自然地,這也會引入如下問題:數(shù)字直接量的類型是什么?例如,1212311或
15、者0.23的類型是什么?幸運(yùn)的是,C#給出了一些易于理解的規(guī)則來解決這些問題。第一,對于整數(shù)直接量,直接量的類型取能保存該數(shù)值的最小整數(shù)類型即可,首先考慮的是int類型。類型的取值范圍由小到大依次是:int、uint、long、ulong,具體類型要由數(shù)值所屬的范圍決定。第二,浮點(diǎn)數(shù)直接量的類型統(tǒng)一為double類型。對于直接量,如果想改變C#默認(rèn)的類型,可以通過附加后綴來顯示地指定其類型。如要指定long類型的直接量,加上后綴l或L。例如,12是int類型,12L則是long類型。要指定無符號整數(shù),則加上會長u或U,例如,100是int類型,而100U是uint類型。要指定無符號長整型,使用
16、ul或UL,例如,456UL是無符號長整型。要指定float類型直接量,則在常量后加上f或F,例如,10.19F。要指定decimal類型的直接常量,則加上后綴m或M。例如,89.6m。注意,雖然整數(shù)常量默認(rèn)創(chuàng)建為int、uint、long、ulong類型,但是可以將它們賦值給byte、sbyte、short或ushort類型的變量,只要所賦的值能表示成目標(biāo)類型即可。.轉(zhuǎn)義字符用單引號表示的字符常量對于大部分可打印字符是有效的,但是對于一些非打印字符,如回車、水平制表符、退格符等,使用文本編輯器時就會有問題出現(xiàn)。此外,一些其他字符,如單引號、雙引號,在C#中有特殊用途,所以不能直接使用它們。由于這些原因,C#提供了特殊的轉(zhuǎn)義字符,如表3-3所示。這些序列可以表示它們所代表的非打印字符。表3-3轉(zhuǎn)義字符序列轉(zhuǎn)義字符含義a響鈴b退格f換頁n換行r回車t水平制表符v垂直制表符0空字符,單引號雙引號反斜杠2.字符串常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【假期提升】 五升六語文暑假作業(yè)(四)-人教部編版(含答案含解析)
- 音樂角色測試試題及答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職公共科目能力檢測試卷A卷附答案
- 醫(yī)療服務(wù)基礎(chǔ)面試題及答案
- 配合老師教學(xué)的合同(2篇)
- 2025年度施工員資格考試全真模擬考試試題及答案(共三套)
- 健康衛(wèi)生知識培訓(xùn)課件
- 年度目標(biāo)達(dá)成工作計(jì)劃與目標(biāo)分解
- 私人導(dǎo)游旅游服務(wù)安全須知
- 成長中的兒童文學(xué)經(jīng)典作品解讀
- 酒店物業(yè)管理服務(wù)合同范本
- 報價單完整版本
- JT-T-794-2019道路運(yùn)輸車輛衛(wèi)星定位系統(tǒng)車載終端技術(shù)要求
- 【課件】勃蘭登堡協(xié)奏曲Ⅱ+課件高一上學(xué)期音樂人音版(2019)必修音樂鑒賞
- G -B- 5009.11-2024 食品安全國家標(biāo)準(zhǔn) 食品中總砷及無機(jī)砷的測定(正式版)
- ISO9001:2015供應(yīng)商審核檢查表英文版
- 2024年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 苗木供貨服務(wù)計(jì)劃方案
- GB/T 28210-2024熱敏紙
- 《諫逐客書》課后練習(xí) 統(tǒng)編版高中語文必修下冊
- 煤礦機(jī)電設(shè)備培訓(xùn)課件
評論
0/150
提交評論