C數(shù)據(jù)類型學(xué)習(xí)教案



《C數(shù)據(jù)類型學(xué)習(xí)教案》由會員分享,可在線閱讀,更多相關(guān)《C數(shù)據(jù)類型學(xué)習(xí)教案(59頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、會計學(xué)1C數(shù)據(jù)類型數(shù)據(jù)類型第一頁,共59頁。3.1 數(shù)據(jù)類型(lixng) C#中數(shù)據(jù)類型(lixng)主要分為兩大類:值類型(lixng)和引用類型(lixng)。 3.1.1 值類型(lixng) C#中值類型(lixng)包括3種:簡單類型(lixng)、結(jié)構(gòu)類型(lixng)和枚舉類型(lixng)。 簡單類型(lixng)包括整數(shù)類型(lixng)、浮點類型(lixng)、小數(shù)類型(lixng)和布爾類型(lixng)等。 第1頁/共59頁第二頁,共59頁。1. 整數(shù)(zhngsh)類型 整數(shù)(zhngsh)類型的數(shù)據(jù)值只能是整數(shù)(zhngsh)。數(shù)學(xué)上的整數(shù)(zhngsh)可以是負(fù)
2、無窮大到正無窮大,但計算機(jī)的存儲單元是有限的,因此計算機(jī)語言所提供的數(shù)據(jù)類型都是有一定范圍的。C#中提供了8種整數(shù)(zhngsh)類型,它們的取值范圍如下表所示。 類型標(biāo)識符描述可表示的數(shù)值范圍sbyte8位有符號整數(shù)-128 +127byte8位無符號整數(shù)0 255short16位有符號整數(shù)-32768 +32767ushort16位無符號整數(shù) 0 65535int32位有符號整數(shù)-2147483648 +2147483647uint32位無符號整數(shù)0 232-1long64位有符號整數(shù)-9223372036854775805 +9223372036854775807ulong64位無符號整
3、數(shù)0 264-1第2頁/共59頁第三頁,共59頁。 2. 浮點類型 小數(shù)在C#中采用浮點類型的數(shù)據(jù)來表示,浮點類型的數(shù)據(jù)包含兩種:單精度浮點型(float)和雙精度浮點型(double),其區(qū)別在于取值范圍和精度的不同。計算機(jī)對浮點數(shù)據(jù)的運算速度大大低于對整數(shù)的運算速度,數(shù)據(jù)的精度越高對計算機(jī)的資源要求越高,因此在對精度要求不高的情況下,我們(w men)可以采用單精度類型,而在精度要求較高的情況下可以使用雙精度類型。 float類型是32位寬,double類型是64位寬。 浮點類型數(shù)據(jù)的精度和可接受的值范圍如下:單精度:取值范圍在+ 1.510-45 3.41038之間,精度為7位數(shù)。雙精度
4、:取值范圍為+5.0-324 1.710308之間,精度為1516位 數(shù)。 第3頁/共59頁第四頁,共59頁。3 小數(shù)類型小數(shù)類型(decimal)類型數(shù)據(jù)是高精度的類型數(shù)據(jù),占用16個字節(jié)(128位),主要為了滿足需要高精度的財務(wù)和金融計算機(jī)領(lǐng)域。小數(shù)類型數(shù)據(jù)的取值范圍和精度如下:小數(shù)類型:取值范圍在+ 1.010-28 7.91028之間,精度為29位數(shù)。小數(shù)類型數(shù)據(jù)的范圍遠(yuǎn)遠(yuǎn)小于浮點型,不過它的精確度比浮點型高得多。所以(suy)相同的數(shù)字對于兩種類型來說可能表達(dá)的內(nèi)容并不相同。 值得注意的是,小數(shù)類型數(shù)據(jù)的后面必須跟m或者M(jìn)后綴來表示它是decimal類型的,如3.14m、0.28m等
5、,否則就會被解釋成標(biāo)準(zhǔn)的浮點類型數(shù)據(jù),導(dǎo)致數(shù)據(jù)類型不匹配。 第4頁/共59頁第五頁,共59頁。 在程序中書寫一個十進(jìn)制的數(shù)值常數(shù)時,C#默認(rèn)按照如下方法判斷一個數(shù)值常數(shù)據(jù)屬于哪種C#數(shù)值類型:l 如果一個數(shù)值常數(shù)不帶小數(shù)點,如12345,則這個常的類型是整型。l 對于一個屬于整型的數(shù)值常數(shù),C#按如下順序判斷該數(shù)的類型:int,uint,long,ulong。l 如果一個數(shù)值常數(shù)帶小數(shù)點,如3.14,則該常數(shù)的類型是浮點型中的double類型。 如果不希望(xwng)C#使用上述默認(rèn)的方式來判斷一個十進(jìn)制數(shù)值常數(shù)的類型,可能通過給數(shù)值常數(shù)加后綴的方法來指定數(shù)值常數(shù)的類型??梢允褂玫臄?shù)值常數(shù)后綴
6、有以下幾種:l u(或者U)后綴:加在整型常數(shù)后面,代表該常數(shù)是uint類型或者ulong類型。具體是其中的哪一種,由常數(shù)的實際值決定。C#優(yōu)先匹配uint類型。l l(或者L)后綴:加在整型常數(shù)后面,代表該常數(shù)是long類型或者ulong類型。具體是其中的哪一種,由常數(shù)的實際值決定。C#優(yōu)先匹配long類型。第5頁/共59頁第六頁,共59頁。l ul后綴:加在整型常數(shù)后面,代表該常數(shù)是ulong類型(lixng)。l f(或者F)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是 float類型(lixng)。l d(或者D)后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是 double類型(lixn
7、g)。l m(或者M(jìn))后綴:加在任何一種數(shù)值常數(shù)后面,代表該常數(shù)是 decimal類型(lixng)。 第6頁/共59頁第七頁,共59頁。 舉例如下: 138f 代表float類型的數(shù)值138.0 518u 代表uint類型的數(shù)值518 36897123ul 代表ulong類型的數(shù)值36897123 22.1m 代表decimal類型的數(shù)值22.1 12.68 代表double類型的數(shù)值12.68 36 代表int類型的數(shù)值36 如果一個數(shù)值常數(shù)超過(chogu)了該數(shù)值常數(shù)的類型的所能表示的范圍,C#在對程序進(jìn)行編譯時,將給出錯誤信息。 剛開始學(xué)習(xí),不可能一下子掌握這么多數(shù)值類型,先牢記以下
8、幾種: int型 :凡是要表示帶符號的整數(shù)時,先考慮使用int型; uint型 :凡是需要不帶符號的整數(shù)時,先考慮使用uint型; double型:凡是需要做科學(xué)計算,并且精度要求不是很高 時,考慮使用double型。第7頁/共59頁第八頁,共59頁。4. 字符類型 C#提供的字符類型數(shù)據(jù)按照國際上公認(rèn)的標(biāo)準(zhǔn),采用(ciyng)Unicode字符集。一個Unicode字符的長度為16位(bit),它可以用來表示世界上大部分語言種類。所有Unicode字符的集合構(gòu)成字符類型。字符類型的類型標(biāo)識符是char,因此也可稱為char類型。 凡是在單引號中的一個字符,就是一個字符常數(shù),如下所示: a、
9、p、 *、 0、8 在表示一個字符常數(shù)時,單引號內(nèi)的有效字符數(shù)量必須且只能是一個,并且不能是單引號或者反斜杠()。 第8頁/共59頁第九頁,共59頁。 為了表示(biosh)單引號和反斜杠等特殊的字符常數(shù),C#提供了轉(zhuǎn)義符,在需要表示(biosh)這些特殊常數(shù)的地方,可以使用這些轉(zhuǎn)義符來替代字符。如下表所示。 轉(zhuǎn)義符字符名稱單引號雙引號反斜杠0空字符(Null)a發(fā)出一個警告 b倒退一個字符f換頁n新的一行r換行并移到同一行的最前面t水平方向的Tabv垂直方向的Tab C#常用(chn yn)的轉(zhuǎn)義符第9頁/共59頁第十頁,共59頁。如 Console.WriteLine(“Hello,”+”
10、+”打印(d yn)出單引號“+”“);例: using System; class StrDemo static void Main( ) Console.WriteLine(“FirstLinenSecondLine”); Console.WriteLine(“AtBtC”); Console.WriteLine(“DtEtF”); 第10頁/共59頁第十一頁,共59頁。5布爾類型 布爾類型數(shù)據(jù)用于表示邏輯真和邏輯假,布爾類型的類型標(biāo)識符是bool。 布爾類型常數(shù)只有兩種值:true(代表“真”)和false(代表“假”)。 布爾類型數(shù)據(jù)主要應(yīng)用在流程控制中。程序員往往(wngwng)通過
11、讀取或設(shè)定布爾類型數(shù)據(jù)的方式來控制程序的執(zhí)行方向。第11頁/共59頁第十二頁,共59頁。3.1.2 引用類型 引用類型是C#中和值類型并列的類型,引用類型所存儲的實際數(shù)據(jù)是當(dāng)前引用值的地址,因此引用類型數(shù)據(jù)的值會隨所指向的值的不同而變化,同一個數(shù)據(jù)也可以有多個引用。這與簡單類型數(shù)據(jù)是不同的,簡單類型數(shù)據(jù)存儲的是自身的值,而引用類型存儲的是將自身的值直接指向到某個(mu )對象的值。 C#中引用類型數(shù)據(jù)有4種:類類型(class-type)、數(shù)組類型(array-type)、接口類型(interface-type)和委托類型(delegate-type)。 第12頁/共59頁第十三頁,共59頁。
12、1. object類 object類是系統(tǒng)提供的基類型,是所有類型的基類,C#中所有的類型都直接或間接派生于對象類型。因此,對于任一個object變量,均可以賦以任何類型的值。int a=8;object obj1;obj1=x;object obj2=x; 對于object類型的變量,聲明(shngmng)必須使用object關(guān)鍵字。第13頁/共59頁第十四頁,共59頁。 2.string類 一個字符串是被雙引號包含的一系列字符。例如,“how are you!”就是一個字符串。 string類是專門用于對字符串進(jìn)行操作的。 字符串在實際應(yīng)用(yngyng)中非常廣泛,字符串之間的運算也是非
13、常方便的。如: string str1=中國,; string str2=你好??; string str3=str1+str2; /這相當(dāng)于str3=中國,你好! char c=str30; /取出str3的第一個字符,即“中”字。 第14頁/共59頁第十五頁,共59頁。C#支持以下兩種形式的字符串常數(shù)。(1)常規(guī)字符串常數(shù) 放在雙引號間的一串字符,就是一個常規(guī)字符串常數(shù),比如: “this is a test” “C#程序設(shè)計教程” 除了普通的字符,一個字符串常數(shù)也能包含一個或多個前面描述的轉(zhuǎn)義符。例如,看看下面的程序,它使用了轉(zhuǎn)義符。例:/轉(zhuǎn)義符在字符串中的使用示范(shfn) using
14、 System; class StrDemo static void Main( ) Console.WriteLine(First0linenSecond0line); Console.WriteLine(你好a); Console.WriteLine(“1t2t3); Console.WriteLine(“*t*t*”); 第15頁/共59頁第十六頁,共59頁。例:using System;class StringDemo public static void Main( ) string str1=“A string”; string str2=Another string.; Cons
15、ole.WriteLine(“0n1”,str1,str2); 運行(ynxng)結(jié)果如下:第16頁/共59頁第十七頁,共59頁。(2)逐字字符串常數(shù)(chngsh)逐字字符串常數(shù)(chngsh)以開頭,后跟一對雙引號,在雙引號中放入字符。如:“計算機(jī)”“How are you!”逐字字符串常數(shù)(chngsh)同常規(guī)字符串常數(shù)(chngsh)的區(qū)別在于,在逐字字符串常數(shù)(chngsh)的雙引號中,每個字符都代表其最原始的意義,在逐字字符串常數(shù)(chngsh)中沒有轉(zhuǎn)義字符。也就是說,逐字字符串常數(shù)(chngsh)雙引號內(nèi)的內(nèi)容在被接受時是不變的,并且可以跨越多行。唯一的例外是,如果要包含雙引號
16、(),就必須在一行中使用兩個雙引號()。第17頁/共59頁第十八頁,共59頁。string str1; /定義(dngy)字符串類型string str2=hello, world; /規(guī)則字符串常數(shù):hello, worldstring str3=hello, world; /逐字字符串常數(shù):hello, world string str4=hello t world; /hello worldstring str5= hello t world; /hello t worldstring str6=“He said Hello to you; /Tom said Hello to yous
17、tring str7=“He said Hello to you; /Tom said Hello to you 簡單來說,規(guī)則字符串要對字符串中的轉(zhuǎn)義符進(jìn)行解釋,而逐字字符串除了對雙引號進(jìn)行解釋外,對其他(qt)字符,用戶定義成什么樣,顯示結(jié)果就是什么樣。 第18頁/共59頁第十九頁,共59頁。例:/逐字字符串常數(shù)(chngsh)實例 using System; class Test static void Main( ) Console.WriteLine(This is a verbatim string literal that spans several lines. ); Cons
18、ole.WriteLine(Here is some tabbed output: 1 2 3 4 5 6 7 8 ); Console.WriteLine(Programmers say, I like C#); 運行(ynxng)結(jié)果如下:第19頁/共59頁第二十頁,共59頁。3.1.3 類型轉(zhuǎn)換 數(shù)據(jù)類型在一定條件下是可以相互轉(zhuǎn)換的,如將int型數(shù)據(jù)轉(zhuǎn)換成double型數(shù)據(jù)。C#允許使用兩種轉(zhuǎn)換的方式:隱式轉(zhuǎn)換(implicit conversions)和顯式轉(zhuǎn)換(explicit conversions)。 1. 隱式轉(zhuǎn)換 隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。在隱式轉(zhuǎn)
19、換過程中,編譯器不需要對轉(zhuǎn)換進(jìn)行詳細(xì)(xingx)的檢查就能安全地執(zhí)行轉(zhuǎn)換,例如數(shù)據(jù)從int類型到long類型的轉(zhuǎn)換。 隱式數(shù)據(jù)轉(zhuǎn)換的使用方法如下: int a=8; /a為整型數(shù)據(jù) long b=a; /b為長整型數(shù)據(jù) float c=a; /c為單精度浮點型數(shù)據(jù)第20頁/共59頁第二十一頁,共59頁。 2顯式轉(zhuǎn)換 顯式轉(zhuǎn)換又叫強(qiáng)制類型轉(zhuǎn)換,與隱式轉(zhuǎn)換相反,顯式轉(zhuǎn)換需要用戶明確地指定轉(zhuǎn)換類型,一般在不存在該類型的隱式轉(zhuǎn)換的時候才使用。 顯式轉(zhuǎn)換可以將一數(shù)值類型強(qiáng)制轉(zhuǎn)換成另一種數(shù)值類型,格式如下: (類型標(biāo)識符)表達(dá)式 意義為:將表達(dá)式的值的類型轉(zhuǎn)換為類型標(biāo)識符的類型。比如: (int)3.1
20、4 /把double類型的3.14轉(zhuǎn)換成int類型需要提醒(t xng)注意以下幾點:(1)顯式轉(zhuǎn)換可能會導(dǎo)致錯誤。進(jìn)行這種轉(zhuǎn)換時編譯器將對轉(zhuǎn)換進(jìn)行溢出檢測。如果有溢出說明轉(zhuǎn)換失敗,就表明源類型不是一個合法的目標(biāo)類型。轉(zhuǎn)換當(dāng)然無法進(jìn)行。(2)對于從float,double, decimal到整型數(shù)據(jù)的轉(zhuǎn)換,將通過舍入得到最接近的整型值,如果這個整型值超出目標(biāo)域,則出現(xiàn)轉(zhuǎn)換異常。 比如: (int)6.28m 轉(zhuǎn)換的結(jié)果為6。 而如果將float的數(shù)據(jù)3e25轉(zhuǎn)換成整數(shù),語句如下: (int) 3e25f則將產(chǎn)生溢出錯誤,因為3e25超過了int類型所能表示的范圍。 第21頁/共59頁第二十二頁
21、,共59頁。3.1.4 裝箱和拆箱 裝箱(boxing)和拆箱(unboxing)是C#類型系統(tǒng)中重要的概念。它允許將任何類型的數(shù)據(jù)轉(zhuǎn)換為對象,同時也允許任何類型的對象轉(zhuǎn)換到與之兼容的數(shù)據(jù)類型,其實拆箱是裝箱的逆過程。1裝箱轉(zhuǎn)換裝箱轉(zhuǎn)換是指將一個值類型的數(shù)據(jù)隱式地轉(zhuǎn)換成一個對象類型(object)的數(shù)據(jù)。把一個值類型裝箱,就是(jish)創(chuàng)建一個object類型的實例,并把該值類型的值復(fù)制給該這個object。例如:下面的兩條語句就執(zhí)行了裝箱轉(zhuǎn)換:int k=100;object obj=k;上面的兩條語句中,第1條語句先聲明一個整型變量k并對其賦值,第2條語句則先創(chuàng)建一個object類型的實
22、例obj,然后將k的值復(fù)制給obj。第22頁/共59頁第二十三頁,共59頁。在執(zhí)行裝箱轉(zhuǎn)換(zhunhun)時,也可以使用顯式轉(zhuǎn)換(zhunhun),如:int k=100;object obj=(object) k; 例:在程序中執(zhí)行裝箱轉(zhuǎn)換(zhunhun),程序代碼如下: using System; class BoxingDemo static void Main( ) Console.WriteLine(執(zhí)行裝箱轉(zhuǎn)換(zhunhun):); int k=200; object obj=k; k=300; Console.WriteLine(obj=0,obj); Console.Wr
23、iteLine(k=0, k); 第23頁/共59頁第二十四頁,共59頁。 2拆箱轉(zhuǎn)換 是指將一個對象類型的數(shù)據(jù)顯式地轉(zhuǎn)換成一個值類型數(shù)據(jù)。 拆箱操作包括分為兩步:首先檢查對象實例(shl),確保它是給定值類型的一個裝箱值,然后把實例(shl)的值復(fù)制到值類型數(shù)據(jù)中。 例如:下面兩條語句就執(zhí)行了拆箱轉(zhuǎn)換: object obj=228; int k=(int)obj; 拆箱轉(zhuǎn)換需要(而且必須)執(zhí)行顯式轉(zhuǎn)換,這是它與裝箱轉(zhuǎn)換的不同之處。第24頁/共59頁第二十五頁,共59頁。例:在程序(chngx)中使用拆箱轉(zhuǎn)換,程序(chngx)代碼如下: using System class Unboxin
24、gDemo static void Main( ) int k=228; object obj=k; /裝箱轉(zhuǎn)換 int j=(int ) obj; /拆箱轉(zhuǎn)換 Console.WriteLine(k=0tobj=1tj=2, k, obj, j); 第25頁/共59頁第二十六頁,共59頁。3.2.1 常量 在C#中,常量在程序的運行過程中其值是不能改變的,例如,數(shù)字100就是一個常量,這樣的常量一般被稱作常數(shù)。 可以通過關(guān)鍵字const來聲明(shngmng)常量,格式如下: const 類型標(biāo)識符 常量名 = 表達(dá)式; 常量名必須是C#的合法標(biāo)識符,在程序中通過常量名來訪問該常量。類型標(biāo)識
25、符指示了所定義的常量的數(shù)據(jù)類型,而表達(dá)式的計算結(jié)果是所定義的常量的值。 如下例所示: const double PI=3.14159265; 上面的語句定義了一個double型的常量PI,它的值是3.14159265。 3.2 常量(chngling)與變量第26頁/共59頁第二十七頁,共59頁。常量有如下特點:l 在程序中,常量只能被賦予初始值。一旦賦予一個常量初始值,這個(zh ge)常量的值在程序的運行過程中就不允許改變,即無法對一個常量賦值。l 定義常量時,表達(dá)式中的運算符對象只允許出現(xiàn)常量和常數(shù),不能有變量存在。例如: int b=30; const int a=60; const
26、int k=b+20; /錯誤,表達(dá)式中不允許出現(xiàn)變量 const int d=a+60; /正確,因為a是常量 a=100; /錯誤,不能修改常量的值 第27頁/共59頁第二十八頁,共59頁。3.2.2 變量 變量是程序運行過程中用于存放數(shù)據(jù)的存儲單元。變量的值在程序的運行過程中是可以改變的。 1變量的定義 在定義變量的時候,首先必須給每一個變量起名,稱為變量名,以便(ybin)區(qū)分不同的變量,在計算機(jī)中,變量名代表存儲地址。C#的變量名必須是合法的C#標(biāo)識符。比如,av和Index都是合法的變量名。 C#中采用如下格式定義一個變量: 類型標(biāo)識符 變量名1,變量名2,第28頁/共59頁第二十
27、九頁,共59頁。例:float fsum;string strName;char a;int j;注意(zh y):C#規(guī)定,任何變量在使用前,必須先定義,后使用。 第29頁/共59頁第三十頁,共59頁。2變量的賦值 變量本身只是一個能保存某種類型的具體數(shù)據(jù)的內(nèi)存單元(這里所說的“內(nèi)存單元”不一定以字節(jié)為單位),對于程序而言,可以使用變量名來訪問這個具體的內(nèi)存單元。變量的賦值,就是將數(shù)據(jù)保存到變量中的過程。在C#中,給一個變量賦值的格式如下: 變量名=表達(dá)式; 比如(br),事先定義了一個double型的變量nAverage和一個int型的變量nAgeSum: double nAverage;
28、 int nAgeSum; 如果要給nAgeSum變量賦予數(shù)值210,應(yīng)該寫成: nAgeSum=210;第30頁/共59頁第三十一頁,共59頁。 在對變量進(jìn)行賦值時,表達(dá)式的值的類型必須同變量的類型相同。 string sName; int nScore; 則以下賦值是正確的: sName=Jack; sName=Tom; nScore=98; 但是(dnsh),以下賦值是錯誤的: sName=5; /不能將整數(shù)賦予字符串對象 nScore=Hello; /不能字符串賦予整型變量第31頁/共59頁第三十二頁,共59頁。 3. 變量的初始化 在定義變量的同時,可以對變量賦值,稱為變量的初始化。
29、在C#中,對變量進(jìn)行初始化的格式如下: 類型標(biāo)識符 變量名=表達(dá)式; 例如: double nScore=98.5; 這代表定義一個(y )double型變量nScore,并將其賦予初始值98.5。 第32頁/共59頁第三十三頁,共59頁。3.3 運算符和表達(dá)式 3.3.1 運算符 運算符是表示各種不同運算的符號。 C#運算符可以分為(fn wi)以下幾類:算術(shù)運算符、賦值運算符、關(guān)系運算符、邏輯運算符、條件運算符和其他運算符。 1算術(shù)運算符 算術(shù)運算符用于對操作數(shù)進(jìn)行算術(shù)運算。C#的算術(shù)運算符同數(shù)學(xué)中的算術(shù)運算符是很相似的。下表列出了C#中允許使用的所有運算符。第33頁/共59頁第三十四頁,
30、共59頁。表 C#算術(shù)(sunsh)運算符 運算符意義運算對象數(shù)目運算對象類型運算結(jié)果類型實例+取正或加法1或2任何數(shù)值類型數(shù)值類型+5、6+8+a取負(fù)或減法1或23、a-b*乘法23*a*b、5*2/除法27/4、a/b%模(求整數(shù)除法的余數(shù),如7除以3的余數(shù)為2,則7%3等于2)2a%(2+5)、a%b、3%2+自增運算1a+、+b-自減運算1a-、-b第34頁/共59頁第三十五頁,共59頁。 盡管+、-、*和/這些運算符的意義和數(shù)學(xué)上的運算符是一樣的。但是在一些特殊的環(huán)境下,有一些特殊的解釋(jish)。 首先,當(dāng)對整數(shù)進(jìn)行“/”運算時,余數(shù)都被舍去了。 例如,10/3在整數(shù)除法中等于3
31、。 可以通過模運算符%來獲得這個除法的余數(shù)。運算符%可以應(yīng)用于整數(shù)和浮點類型,例如,10%3的結(jié)果是1,10.0%3.0的結(jié)果也是1。第35頁/共59頁第三十六頁,共59頁。例:/ %運算符的示例(shl) using System; class ModDemo static void Main( ) int iresult,irem; double dreult,drem; iresult=10/3; irem=10%3; dresult=10.0/3.0; drem=10.0%3.0; Console.WriteLine(10/3=0t 10%3=1, iresult, irem); Co
32、nsole.WriteLine(10.0/3.0=0t10.0%3.0=1,dresult, drem); 程序(chngx)的輸出如下所示:10/3=3 10%3=110.0/3.0=3.33333333333333 10.0%3.0=1第36頁/共59頁第三十七頁,共59頁。 C#還有兩種特殊的算術(shù)運算符:+(自增運算符)和-(自減速運算符),其作用是使變量的值自動增加1或者減少1。 因此(ync),x=x+1和x+一樣的;x=x-1和x-是一樣的。 自增和自減運算符既可以在操作數(shù)前面(前綴),也可以在操作數(shù)后在(后綴)。例如,x=x+1; 可以被寫成 +x; /前綴格式 或者 x+; /
33、后綴格式 當(dāng)自增或自減運算符用在一個較大的表達(dá)式中一部分時,存在著重要的區(qū)別。當(dāng)一個自增或自減運算符在它的操作數(shù)前面時,C#將在取得操作數(shù)的值前執(zhí)行自增或自減操作,并將其用于表達(dá)式的其他部分。如果運算符在操作數(shù)的后面,C#將先取得操作數(shù)的值,然后進(jìn)行自增或自減運算。 第37頁/共59頁第三十八頁,共59頁。 比如下面的例子: x=16; y=+x; 在這種情況下,y被賦值為17,但是,如果代碼(di m)如下所寫: x=16; y=x+; 那么y被賦值為16。在這兩種情況下,x都被賦值為11,不同之處在于發(fā)生的時機(jī)。自增運算符和自減運算符發(fā)生的時機(jī)有非常重要的意義。第38頁/共59頁第三十九頁
34、,共59頁。例:演示(ynsh)自增運算符。 using System; class Test static void Main( ) int x=2; int y=x+; Console.WriteLine(y=0, y); y=+x; Console.WriteLine(y=0, y); 程序說明:第一次先使用(shyng)后自增,所以輸出2,第二交先自增后使用(shyng),所以輸出4。 注意:+、 -只能用變量,而不能用于常量或表達(dá)式,例如12+或-(x+y)都是錯誤的。第39頁/共59頁第四十頁,共59頁。2賦值運算符 賦值運算符用于將一個數(shù)據(jù)賦予一個變量,賦值操作符的左操作數(shù)必須是
35、一個變量,賦值結(jié)果是將一個新的數(shù)值存放在變量所指示的內(nèi)存空間中。 其中“=”是簡單的賦值運算符,它的作用是將右邊的數(shù)據(jù)賦值給左邊的變量,數(shù)據(jù)可以是常量,也可以是表達(dá)式。 例如,x=8或者x=9-x都是合法的,它們分別執(zhí)行(zhxng)了一次賦值操作。第40頁/共59頁第四十一頁,共59頁。表 C#的賦值運算符類 型符 號說 明簡單賦值運算符=x=1復(fù)合賦值運算符+=x+=1等價于x=x+1-=x-=1等價于x=x-1*=1x*=1等價于x=x*1/=x/=1等價于x=x/1%=x%=1等價于x=x%1第41頁/共59頁第四十二頁,共59頁。 復(fù)合(fh)賦值運算符的運算非常簡單,例如x*=5就
36、等價于x=x*5,它相當(dāng)于對變量進(jìn)行一次自乘操作。復(fù)合(fh)賦值運算符的結(jié)合方向為自右向左。同樣,也可以把表達(dá)式的值通過復(fù)合(fh)賦值運算符賦予變量,這時復(fù)合(fh)賦值運算右邊的表達(dá)式是作為一個整體參加運算的,相當(dāng)于表達(dá)式有括號。例如,a%=b*2-5相當(dāng)于a%=(b*2-5),它與a=a%(b*2-5)是等價的。 C#語言可以對變量進(jìn)行連續(xù)賦值,這時賦值操作符是右關(guān)聯(lián)的,這意味著從右向左運算符被分組。如x=y=z等價于x=(y=z)。第42頁/共59頁第四十三頁,共59頁。3. 關(guān)系運算符 關(guān)系運算符用于在程序中比較兩個值的大小,關(guān)系運算的結(jié)果(ji gu)類型是布爾型,也就說,結(jié)果(
37、ji gu)不是true就是false。 一個關(guān)系運算符兩種的運算對象如果是數(shù)值類型的對象,則比較的是兩個數(shù)的大小;如果是字符型對象,則比較的是兩個字符的Unicode編碼的大小,比如:字符x的Unicode編碼小于y,則關(guān)系表達(dá)式x5-2 (結(jié)果(ji gu)是false)第43頁/共59頁第四十四頁,共59頁。表 C#的關(guān)系(gun x)運算符符號意義運算結(jié)果類型運算對象個數(shù)實例大于布爾型。如果條件成立,結(jié)果為true,否則結(jié)果為false 236,x2,ba小于3.143,x=大于等于3.26=b=小于等于PIb; Console.WriteLine(“ab is 0”, j); 該程序
38、運行后,輸出(shch)結(jié)果為:ab is False第45頁/共59頁第四十六頁,共59頁。 4邏輯運算(yn sun)符 邏輯運算(yn sun)符用于表示兩個布爾值之間的邏輯關(guān)系,邏輯運算(yn sun)結(jié)果是布爾類型。 邏輯非運算(yn sun)的結(jié)果是原先的運算(yn sun)結(jié)果的逆,即:如果原先運算(yn sun)結(jié)果為false,則經(jīng)過邏輯非運算(yn sun)后,結(jié)果為true;原先為true則,結(jié)果為false。 邏輯與運算(yn sun)含義是,只有兩個運算(yn sun)對象都為true,結(jié)果才為true;只要其中有一個是false,結(jié)果就為false。 邏輯或運算(y
39、n sun)含義是,只要兩個運算(yn sun)對象中有一個是true,結(jié)果就為true,只有兩個條件均為false,結(jié)果才為false。 第46頁/共59頁第四十七頁,共59頁。 符號意義運算對象類型運算結(jié)果類型運算對象個數(shù)實例!邏輯非布爾類型布爾類型1!(ij)&邏輯與2xy&x0|邏輯或2xy|x0表 C#的邏輯(lu j)運算符第47頁/共59頁第四十八頁,共59頁。 當(dāng)需要多個判定條件時,可以(ky)很方便地使用邏輯運算符將關(guān)系表達(dá)式連接起來。 比如,在表達(dá)式xy&x0中: 只有當(dāng)xy并且x0兩個條件都滿足時,結(jié)果才為true,否則結(jié)果就為false;在表達(dá)式xy|x0中,只要xy或
40、者x0這兩個條件中的任何一個成立,結(jié)果就為true, 只有在xy并且x0都不成立的條件下結(jié)果才為false;在表達(dá)式!(xy)中,如果xy則返回false,如果xy)同表達(dá)式x8?15+a:39”,由于68的值為false,所以整個表達(dá)式的值是39。 第49頁/共59頁第五十頁,共59頁。7.其他運算符 (1) 字符串連接符(+) 字符串連接是最常用的字符串運算。所謂字符串的連接,就是將兩個字符串連接在一起,形成新的字符串。C#提供了字符串連接運算符“+”,用于連接兩個字符串。比如(br):“abc”+“efg” 結(jié)果是abcefg“36812”+“3.14” 結(jié)果是368123.14 第50
41、頁/共59頁第五十一頁,共59頁。 (2) is運算符 is運算符用于檢查表達(dá)式是否指定的類型,如果是,結(jié)果為true,否則結(jié)果為false。例如(lr): int k=2; bool isTest=k is int; /isTest=true (3) sizeof運算符 sizeof運算符獲得值類型數(shù)據(jù)在內(nèi)存占用的字節(jié)數(shù)。sizeof運算符的使用方法如下: sizeof(類型標(biāo)識符) 它的結(jié)果是一個整數(shù),這個整數(shù)代表字節(jié)數(shù)。比如:sizeof(int) /結(jié)果是4。因為每個int型變量占用4個字節(jié)。 第51頁/共59頁第五十二頁,共59頁。 (4 ) typeof運算符 typeof運算符用
42、于獲得一個對象的類型。 (5) checked和unchecked運算符 這兩個運算符用于控制整數(shù)算術(shù)運算中當(dāng)前環(huán)境的溢出情況。checked用于檢測某些操作的溢出條件,下面(xi mian)代碼試圖分配不符合short變量范圍的值,引發(fā)系統(tǒng)錯誤: short val1=20000, val2=20000; short myshort=checked(short)(val1+val2); /出現(xiàn)錯誤 借助于uncheked運算符,就可以保證即使溢出,也會忽略錯誤,接受結(jié)果,例如: short val1=2000, val2=2000; short myshort=checked(short)(
43、val1+val2); /出現(xiàn)錯誤, /但是被忽略第52頁/共59頁第五十三頁,共59頁。3.3.2 表達(dá)式 表達(dá)式是運算符、常量和變量等組成的符號序列。 1算術(shù)表達(dá)式 算術(shù)表達(dá)式是用算術(shù)運算符將運算對象連接起來的符合語法規(guī)則的式子,其中運算對象可以是常量、變量,也可以是函數(shù)。 在一個算術(shù)表達(dá)式中,算術(shù)運算有一定的優(yōu)先運算順序。在求表達(dá)式的值時,要按照運算符的優(yōu)先級別進(jìn)行計算。由于乘法、除法運算的優(yōu)先級別高于加法和減法運算,所以在求算術(shù)表達(dá)式的結(jié)果時,首先要進(jìn)行乘除運算,然后再進(jìn)行加減運算。如果(rgu)一個表達(dá)式中包含連續(xù)兩個或兩個以上級別相同的運算符,則要遵循自左向右的順序進(jìn)行運算。 第5
44、3頁/共59頁第五十四頁,共59頁。 2賦值表達(dá)式 由賦值運算符將變量和表達(dá)式連接起來的式子稱為賦值表達(dá)式,它的一般(ybn)格式為: 變量 賦值運算符 表達(dá)式 對賦值表達(dá)式求解的過程就是將表達(dá)式的結(jié)果賦給變量。例如賦值表達(dá)式a=15,就是把15這個常數(shù)賦值給變量a。 在賦值表達(dá)式中,表達(dá)式又可以是賦值表達(dá)式。 例如: y=x=8*8+3 這個賦值表達(dá)式的值是67。由于賦值運算符的結(jié)合性是自右至左的,所以y=x=8*8+3和 y=(x=8*8+3)是等價的。 第54頁/共59頁第五十五頁,共59頁。 3關(guān)系表達(dá)式 用關(guān)系運算符將兩個表達(dá)式連接起來的式子稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是布爾類型,
45、即真(true)或假(false)。對關(guān)系表達(dá)式進(jìn)行運算,也就是對參加運算的兩個操作數(shù)進(jìn)行比較,判斷比較的結(jié)果是否滿足關(guān)系運算符所描述的關(guān)系。如果滿足,則關(guān)系表達(dá)式的結(jié)果為真,如果不滿足,則結(jié)果為假。關(guān)系運算符的結(jié)合方向為自左向右。 例如: x=8; y=6; z=xy+3; /結(jié)果為false a=xy&z; /結(jié)果為false 所有關(guān)系運算符的優(yōu)先級別(jbi)都高于賦值運算符而低于算術(shù)運算符。 第55頁/共59頁第五十六頁,共59頁。 4邏輯運算符 用邏輯運算符將關(guān)系表達(dá)式或者邏輯值連接起來的式子稱為邏輯表達(dá)式。邏輯表達(dá)式的值應(yīng)該是一個布爾類型(lixng),它只能取true或false
46、。 三個邏輯運算符的運算順序為“邏輯非”最高,其次是“邏輯與”,最后為“邏輯或”。 例如邏輯表達(dá)式: !(36)|(5=9)|(7=1) 其 結(jié) 果 為 t r u e , 因 為 上 面 的 關(guān) 系 式 等 價 于“!false|true&false|true”,按照邏輯運算符優(yōu)先順序進(jìn)行運算,得到最后結(jié)果為true。 5條件表達(dá)式 由條件運算符和表達(dá)式組成的式子稱為條件表達(dá)式。 例如: 83?5:2; 其結(jié)果為5,因為83為true,則整個表達(dá)式的值為“:”前面表達(dá)式的值,這里是常數(shù)5。 第56頁/共59頁第五十七頁,共59頁。 6多種運算符組成的表達(dá)式的運算 在對包含多種運算符表達(dá)式求值
47、時,如果有括號,先計算括號里面的表達(dá)式。在運行時各運算符執(zhí)行的先后級別和結(jié)合性確定。先執(zhí)行運算優(yōu)先級別高的運算,然后執(zhí)行運算優(yōu)先級別低的。 當(dāng)運算符兩邊(lingbin)的運算對象的優(yōu)先級別一樣時,由運算符的結(jié)合性來控制運算執(zhí)行的順序。除了賦值運算符,所有的二元運算符都是左結(jié)合,即運算按照從左到右的順序來執(zhí)行。賦值運行符和條件運算符是右結(jié)合的,即運算按照從右到左的順序來執(zhí)行。 第57頁/共59頁第五十八頁,共59頁。例如(lr):表達(dá)式3+9+(2+(8-3)*4%3)-6的計算步驟為: 3+9+(2+5*4%3)-5 3+9+(2+20%3)-5 3+9+(2+2)-5 3+9+4-5 12+4-5 16-5 得出結(jié)果為11。這里乘法符和取模運算符、加法運算符和減法運算符的運算級別相同,計算表達(dá)式的方式是按照從左向右的順序計算。 第58頁/共59頁第五十九頁,共59頁。
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 離心泵的檢修各零部件檢修標(biāo)準(zhǔn)
- 金屬材料疲勞強(qiáng)度的八大主要影響因素
- 機(jī)械安全知識
- 電機(jī)的工作原理與種類
- 設(shè)備點檢內(nèi)容
- 有效防止液壓系統(tǒng)漏油的技術(shù)要領(lǐng)
- 鈑金和管工機(jī)械安全操作規(guī)程
- 閥門的100個專業(yè)術(shù)語
- 某單位機(jī)械設(shè)備安全檢查表
- 離心泵的汽蝕與吸入特性
- 過濾網(wǎng)目數(shù)標(biāo)準(zhǔn)
- 減少設(shè)備潤滑故障的措施
- 離心泵機(jī)械密封安裝使用規(guī)則
- 閥門常見故障與原因
- 呼吸閥和真空破壞閥基礎(chǔ)知識總結(jié)