C#程序設(shè)計(jì) 課件 第3章 C#數(shù)據(jù)類(lèi)型與表達(dá)式_第1頁(yè)
C#程序設(shè)計(jì) 課件 第3章 C#數(shù)據(jù)類(lèi)型與表達(dá)式_第2頁(yè)
C#程序設(shè)計(jì) 課件 第3章 C#數(shù)據(jù)類(lèi)型與表達(dá)式_第3頁(yè)
C#程序設(shè)計(jì) 課件 第3章 C#數(shù)據(jù)類(lèi)型與表達(dá)式_第4頁(yè)
C#程序設(shè)計(jì) 課件 第3章 C#數(shù)據(jù)類(lèi)型與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄第3章

C#數(shù)據(jù)類(lèi)型與表達(dá)式3.1數(shù)據(jù)類(lèi)型3.2常量(字面量)與變量3.3進(jìn)制轉(zhuǎn)換操作*3.4運(yùn)算符與表達(dá)式目錄第3章C#數(shù)據(jù)類(lèi)型與表達(dá)式教學(xué)目標(biāo)了解C#數(shù)據(jù)類(lèi)型的分類(lèi);掌握常見(jiàn)數(shù)據(jù)類(lèi)型的使用;能夠靈活運(yùn)用運(yùn)算符和表達(dá)式。難點(diǎn)常見(jiàn)數(shù)據(jù)類(lèi)型的使用方法;運(yùn)算符的結(jié)合性。教學(xué)重點(diǎn)3.1數(shù)據(jù)類(lèi)型分類(lèi)C#類(lèi)型的分類(lèi):數(shù)據(jù)項(xiàng)的類(lèi)型定義了存儲(chǔ)數(shù)據(jù)需要的內(nèi)存大小及組成該類(lèi)型的數(shù)據(jù)成員。類(lèi)型還決定了對(duì)象在內(nèi)存中的存儲(chǔ)位置——?;蚨眩ㄖ殿?lèi)型與引用類(lèi)型)。表:C#中的值類(lèi)型與引用類(lèi)型值類(lèi)型引用類(lèi)型預(yù)定義類(lèi)型(16種)sbytebytefloatobjectshortushortdoublestringintuintchardynamiclongulongdecimalbool用戶(hù)定義類(lèi)型structenumclassinterfacedelegatearray

值類(lèi)型又稱(chēng)為實(shí)值類(lèi)型,特點(diǎn)是:變量直接擁有自己的數(shù)據(jù),即數(shù)據(jù)就存儲(chǔ)在變量對(duì)應(yīng)的內(nèi)存空間中。值類(lèi)型的結(jié)構(gòu)如下圖所示。

值類(lèi)型變量存儲(chǔ)在棧中。值類(lèi)型是從System.ValueType類(lèi)繼承而來(lái)。C#預(yù)定義了13個(gè)簡(jiǎn)單類(lèi)型的值類(lèi)型,分別是整數(shù)類(lèi)型8個(gè)、浮點(diǎn)類(lèi)型3個(gè)、布爾類(lèi)型和字符類(lèi)型。3.1數(shù)據(jù)類(lèi)型1.值類(lèi)型字符類(lèi)型3.1數(shù)據(jù)類(lèi)型1.值類(lèi)型namespaceConsoleApplication2{

class

Program

{

static

voidMain(string[]args)

{

inta=1;

charb='a';

intc=a+b;Console.WriteLine(c);Console.WriteLine("\x61");

}

}}

整數(shù)類(lèi)型(Integer)變量可以存儲(chǔ)整數(shù)值。C#預(yù)定義的8個(gè)整數(shù)類(lèi)型,其類(lèi)型名、關(guān)聯(lián)的類(lèi)、數(shù)的取值范圍等如表2-1所示,最常用的整數(shù)類(lèi)型是int。3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

整數(shù)類(lèi)型CTS類(lèi)型數(shù)值范圍格式有符號(hào)singalsbyteSystem.SByte-128~127(-27~27-1)帶符號(hào)8位整數(shù)shortSystem.Int16-32768~32767(-215~215-1)帶符號(hào)16位整數(shù)intSystem.Int32-2147483648~2147483647帶符號(hào)32位整數(shù)longSystem.Int64-263~263-1帶符號(hào)64位整數(shù)無(wú)符號(hào)unsingalbyteSystem.Byte0~255(0~28-1)無(wú)符號(hào)8位整數(shù)ushortSystem.Uint160~65535(0~216-1)無(wú)符號(hào)16位整數(shù)uintSystem.Uint320~4294967295(0~232-1)無(wú)符號(hào)32位整數(shù)ulongSystem.Uint640~264-1無(wú)符號(hào)64位整數(shù)3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

字節(jié)(Byte)是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位,一個(gè)字節(jié)存儲(chǔ)8位無(wú)符號(hào)數(shù)。1B(字節(jié))=8b(位)1KB=1024B1MB=1024KB1GB=1024MB1TB=1024GB根據(jù)實(shí)數(shù)的精度、范圍等要求,C#為實(shí)數(shù)定義了浮點(diǎn)類(lèi)型(float、double)和decimal類(lèi)型。如下表所示。

Decimal類(lèi)型是一種專(zhuān)門(mén)用于財(cái)務(wù)計(jì)算的類(lèi)型。如果要將數(shù)值以decimal類(lèi)型來(lái)處理,就應(yīng)該使用M(或m)將其強(qiáng)制指定為decimal類(lèi)型。例如:decimalnum=123.567M;與float和double不同,decimal可以準(zhǔn)確地表示分?jǐn)?shù)。3.1數(shù)據(jù)類(lèi)型

1.2實(shí)數(shù)類(lèi)型

CTS類(lèi)型數(shù)值范圍小數(shù)位格式floatSystem.Single±1.5×10-45~±3.4×1038732位單精度浮點(diǎn)數(shù)doubleSystem.Double-±5.0×10-324~±1.7×1030815/1664位雙精度浮點(diǎn)數(shù)decimalSystem.Decimal±1.0×10-28~±7.9×102828128位高精度實(shí)數(shù)3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

類(lèi)型范圍namespaceConsoleApplication2{classProgram{staticvoidMain(string[]args){Console.WriteLine("byte:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",

typeof(byte).Name,sizeof(byte),byte.MinValue,byte.MaxValue);Console.WriteLine("sbyte:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(sbyte).Name,sizeof(sbyte),sbyte.MinValue,sbyte.MaxValue);Console.WriteLine("short:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(short).Name,sizeof(short),short.MinValue,short.MaxValue);Console.WriteLine("ushort:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(ushort).Name,sizeof(ushort),ushort.MinValue,ushort.MaxValue);Console.WriteLine("int:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(int).Name,sizeof(int),int.MinValue,int.MaxValue);

Console.WriteLine("uint:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(uint).Name,sizeof(uint),uint.MinValue,uint.MaxValue);Console.WriteLine("long:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(long).Name,sizeof(long),long.MinValue,long.MaxValue);Console.WriteLine("ulong:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(ulong).Name,sizeof(ulong),ulong.MinValue,ulong.MaxValue);3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

類(lèi)型范圍Console.WriteLine("float:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(float).Name,sizeof(float),float.MinValue,float.MaxValue);Console.WriteLine("double:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(double).Name,sizeof(double),double.MinValue,double.MaxValue);Console.WriteLine("decimal:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(decimal).Name,sizeof(decimal),decimal.MinValue,decimal.MaxValue);Console.WriteLine("bool:\t{0}:\t所占字節(jié)數(shù):{1}\t\n",typeof(bool).Name,sizeof(bool));Console.WriteLine("char:\t{0}:\t所占字節(jié)數(shù):{1}\t最小值:{2}\t最大值:{3}\n",typeof(char).Name,sizeof(char),char.MinValue,char.MaxValue);Console.ReadLine();}}}3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

類(lèi)型范圍輸出結(jié)果:布爾類(lèi)型(Boolean)數(shù)據(jù)用于邏輯運(yùn)算,表示真或假的邏輯結(jié)果,占一個(gè)字節(jié)。C#語(yǔ)言預(yù)定了兩個(gè)常量標(biāo)識(shí)符true和false,分別表示真和假。歷史:在C語(yǔ)言中,沒(méi)有布爾類(lèi)型,而以1(非0)和0表示條件判斷時(shí)的真假,它天然契合計(jì)算機(jī)中的二進(jìn)制特性,但這樣導(dǎo)致代碼的可讀性很差;在C++中,為了提高可讀性,引入了布爾類(lèi)型,但為了兼容C語(yǔ)言,它保留了以1、0表示真假的特性;但在C#中,1、0已經(jīng)不能用來(lái)表示真和假,因此,布爾型變量不能用整數(shù)來(lái)賦值,只能賦值為true或者false。例如:Boolflag;flag=false;//正確flag=0;//錯(cuò)誤3.1數(shù)據(jù)類(lèi)型

1.3布爾類(lèi)型布爾類(lèi)型CTS類(lèi)型數(shù)值范圍boolSystem.BooleanTrue或false字符類(lèi)型(Character)用來(lái)表示單個(gè)字符。字符值用一對(duì)單撇號(hào)來(lái)表示,如’A’、’1’等。

char表示的是一個(gè)16位的UnicodeUTF-16字符,占2個(gè)字節(jié),不再是8位的ACSII碼。雖然8位ASCII碼可以表示256個(gè)字符,但對(duì)于數(shù)字龐大的漢字及其它語(yǔ)言字符,ASCII編碼遠(yuǎn)遠(yuǎn)不夠,因此,對(duì)ASCII碼進(jìn)行擴(kuò)展演變?yōu)?6位Unicode??梢哉f(shuō),ASCII碼是Unicode的一個(gè)子集,Unicode的前256個(gè)字符與ASCII碼字符相同。char類(lèi)型的默認(rèn)值為\0,即U+0000。char類(lèi)型支持比較、相等、增量和減量運(yùn)算符。此外,對(duì)于char操作數(shù),算數(shù)和邏輯位運(yùn)算符對(duì)相應(yīng)的字符代碼執(zhí)行操作,并得出int類(lèi)型的結(jié)果。字符串類(lèi)型將文本表示為char值的序列。3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型(第5章)字符類(lèi)型CTS類(lèi)型范圍charSystem.Char表示一個(gè)16位Unicode的字符有一類(lèi)特殊字符,用反斜杠\引導(dǎo),稱(chēng)為轉(zhuǎn)義字符,用于表示一些無(wú)法直接表示的字符,如表2-5所示。除此之外,Unicode轉(zhuǎn)義序列可用\u后跟四位十六進(jìn)制字符(必須指定全部四位十六進(jìn)制值)表示,或\x后跟不多于四位十六進(jìn)制字符表示(可以省略前導(dǎo)零)。例如:’\u006A’是一個(gè)有效的轉(zhuǎn)義序列,而‘\u06A’和‘\u6A’是無(wú)效的,’\x006A’、’\x06A’和‘\x6A’轉(zhuǎn)義序列是有效的,并且對(duì)應(yīng)于同一個(gè)字符。C#語(yǔ)言中的常用轉(zhuǎn)義字符:3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型轉(zhuǎn)義字符字符名Unicode編碼

轉(zhuǎn)義字符字符名Unicode編碼\’單引號(hào)\u0027

\f換頁(yè)\u000C\’’雙引號(hào)\u0022\n換行\(zhòng)u000A\\反斜杠\u005c\r回車(chē)\u000D\0空字符\u0000\t水平制表符\u0009\a響鈴\u0007\v垂直制表符\u000B\b退格\u0008

3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型https://symbl.cc/cn/unicode/table/3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型https://symbl.cc/cn/unicode/table/3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型https://symbl.cc/cn/unicode/table/應(yīng)用場(chǎng)景:文本處理:char常用于表示單個(gè)字符,用于文本處理任務(wù),比如字符串操作、搜索、替換等。輸入驗(yàn)證:在對(duì)用戶(hù)輸入進(jìn)行驗(yàn)證時(shí),可以使用char數(shù)據(jù)類(lèi)型來(lái)檢查輸入是否符合特定的字符要求,比如檢查輸入是否是字母、數(shù)字或特定符號(hào)。編碼和解碼:在處理字符編碼時(shí),char數(shù)據(jù)類(lèi)型用于表示單個(gè)字符,比如在將字符串轉(zhuǎn)換為字節(jié)流或從字節(jié)流中解析字符串時(shí),需要使用char類(lèi)型來(lái)表示字符。標(biāo)記化和解析:在解析或標(biāo)記化文本數(shù)據(jù)時(shí),char數(shù)據(jù)類(lèi)型可用于分割文本或標(biāo)記,識(shí)別特定的分隔符或標(biāo)記符號(hào)。圖形用戶(hù)界面(GUI)應(yīng)用:在GUI應(yīng)用程序中,char數(shù)據(jù)類(lèi)型可用于處理用戶(hù)界面元素的文本輸入和顯示,比如在文本框中輸入文本、按鈕上顯示的標(biāo)簽等。3.1數(shù)據(jù)類(lèi)型

1.4字符類(lèi)型枚舉類(lèi)型(enumerated)是一種獨(dú)特的值類(lèi)型,它用于聲明一組命名的常量。每種枚舉類(lèi)型均有一種基礎(chǔ)類(lèi)型,此基礎(chǔ)類(lèi)型可以是除char外的任何類(lèi)型。枚舉類(lèi)型的聲明格式:enum枚舉變量名{成員1[=值1],成員2[=值2],…};例如:enumWeek{Sunday,Monday,Wednesday,Thursday,Friday,Saturday};WeekToday定義了枚舉類(lèi)型之后,給枚舉變量Today賦值時(shí),就只能賦予7個(gè)符號(hào)常量中的某一個(gè),否則出錯(cuò)。說(shuō)明:①枚舉元素的默認(rèn)基礎(chǔ)類(lèi)型為int,在默認(rèn)的情況下,第一個(gè)枚舉數(shù)的值為0,第2個(gè)枚舉數(shù)的值為1,依次類(lèi)推。也可以在枚舉定義中給定枚舉元素的枚舉數(shù)值。3.1數(shù)據(jù)類(lèi)型

1.5枚舉類(lèi)型(第7章)3.1數(shù)據(jù)類(lèi)型

enumTrafficLight{Green,Yellow,Red}…staticvoidMain(){TrafficLightt1=TrafficLight.Yellow;Console.WriteLine($”{t1},\t{(int)t1}”};}//默認(rèn)Green=0,Yellow=1,Red=2//輸出Yellow,1枚舉例如:

enumWeekDays{Sunday=1,Monday,Wednesday,Thursday=5,Friday,Saturday};

在此枚舉類(lèi)型定義中,Monday的枚舉數(shù)為2,Saturday的枚舉數(shù)位7.②從枚舉類(lèi)型到整型的轉(zhuǎn)換需要顯示轉(zhuǎn)換來(lái)完成。例如:intx=(int)WeekDays.Monday;③在有限組數(shù)的描述中,使用枚舉類(lèi)型比使用無(wú)符號(hào)的整數(shù)更加直觀、易讀。示例:在C#中,結(jié)構(gòu)體(Struct)是一種用戶(hù)自定義的值類(lèi)型數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體可以用于存儲(chǔ)一組相關(guān)的數(shù)據(jù),類(lèi)似于類(lèi)(Class),但與類(lèi)不同的是,結(jié)構(gòu)體是值類(lèi)型而類(lèi)是引用類(lèi)型。這意味著結(jié)構(gòu)體的實(shí)例在棧上分配內(nèi)存,而類(lèi)的實(shí)例則在堆上分配內(nèi)存。結(jié)構(gòu)體通常用于存儲(chǔ)輕量級(jí)的數(shù)據(jù),且不能繼承特性。由于結(jié)構(gòu)體是值類(lèi)型,對(duì)結(jié)構(gòu)體變量的賦值和傳遞會(huì)進(jìn)行值復(fù)制,這可以避免意外的副作用。在C#中,結(jié)構(gòu)體(Struct)的定義語(yǔ)法如下://------------------------------------------------------------------------------------structStructName{//可以在這里聲明結(jié)構(gòu)體的字段(成員變量)//可以在這里聲明結(jié)構(gòu)體的屬性(getters和setters)//可以在這里聲明結(jié)構(gòu)體的方法

3.1數(shù)據(jù)類(lèi)型

1.6結(jié)構(gòu)體類(lèi)型(第7章)//可以包含構(gòu)造函數(shù)//可以包含靜態(tài)構(gòu)造函數(shù)(使用static關(guān)鍵字)}結(jié)構(gòu)體定義的基本語(yǔ)法由以下部分組成:①struct:這是C#中聲明結(jié)構(gòu)體的關(guān)鍵字。②StructName:這是你為結(jié)構(gòu)體選擇的標(biāo)識(shí)符名稱(chēng)。按照C#命名約定,結(jié)構(gòu)體名稱(chēng)應(yīng)以大寫(xiě)字母開(kāi)頭。③成員變量、屬性和方法:在結(jié)構(gòu)體的大括號(hào){}內(nèi),你可以定義結(jié)構(gòu)體的成員變量、屬性和方法等。④構(gòu)造函數(shù):結(jié)構(gòu)體可以包含構(gòu)造函數(shù),用于初始化結(jié)構(gòu)體的實(shí)例??偨Y(jié):結(jié)構(gòu)體是C#中的一種值類(lèi)型數(shù)據(jù)結(jié)構(gòu),通常用于表示輕量級(jí)數(shù)據(jù)類(lèi)型。它在棧上分配內(nèi)存,適合用于簡(jiǎn)單的數(shù)據(jù)存儲(chǔ),并避免了引用類(lèi)型的復(fù)制和垃圾回收開(kāi)銷(xiāo)。然而,對(duì)于大型、復(fù)雜的數(shù)據(jù)類(lèi)型和需要共享和修改的數(shù)據(jù),通常應(yīng)該使用類(lèi)(引用類(lèi)型)。分配結(jié)構(gòu)比分配類(lèi)的實(shí)例需要更少的消耗,所以對(duì)于僅由幾個(gè)基礎(chǔ)類(lèi)型組成的新類(lèi)型,優(yōu)先推薦使用結(jié)構(gòu)。3.1數(shù)據(jù)類(lèi)型

3.1數(shù)據(jù)類(lèi)型

結(jié)構(gòu)體示例:structPoint{publicintX;publicintY;}classProgram{staticvoidMain(){Pointfirst,second;Pointthird=newPoint();first.X=10;first.Y=10;second.X=20;second.Y=20;third.X=first.X+second.X;third.Y=first.Y+second.Y;Console.WriteLine($”first:{first.X},{first.Y}”);Console.WriteLine($”second:{second.X},{second.Y}”);Console.WriteLine($”third:{third.X},{third.Y}”);}}//聲明結(jié)構(gòu)體//創(chuàng)建結(jié)構(gòu)體實(shí)例//使用new運(yùn)算符

引用類(lèi)型是C#應(yīng)用程序中的主要對(duì)象數(shù)據(jù)類(lèi)型。在應(yīng)用程序執(zhí)行的過(guò)程中,預(yù)定義的對(duì)象類(lèi)型以new創(chuàng)建對(duì)象實(shí)例,并且存儲(chǔ)在堆中。

引用類(lèi)型具有如下特征:

①必須在托管堆中為引用類(lèi)型變量分配內(nèi)存;

②使用new關(guān)鍵字創(chuàng)建引用類(lèi)型變量的引用實(shí)例;

③在托管堆中分配的每個(gè)對(duì)象都有與之相關(guān)聯(lián)的附加成員,這些成員必須被初始化;

④引用類(lèi)型對(duì)象是由垃圾回收機(jī)制來(lái)管理的;

⑤引用類(lèi)型變量被賦值前的值是null。

引用類(lèi)型的變量存儲(chǔ)對(duì)其數(shù)據(jù)(對(duì)象)的引用,而值類(lèi)型的變量直接包含其數(shù)據(jù)。對(duì)于引用類(lèi)型,若兩個(gè)變量引用同一對(duì)象,則對(duì)一個(gè)變量執(zhí)行的操作會(huì)影響另一個(gè)變量所引用的對(duì)象。對(duì)于值類(lèi)型,每個(gè)變量都具有其自己的數(shù)據(jù)副本,對(duì)一個(gè)變量執(zhí)行的操作不會(huì)影響另一個(gè)變量(ref

out

參數(shù)變量除外)。3.1數(shù)據(jù)類(lèi)型2.引用類(lèi)型C#語(yǔ)言引用類(lèi)型結(jié)構(gòu)示意圖如圖所示:

3.1數(shù)據(jù)類(lèi)型字符串是編程中經(jīng)常使用的一種類(lèi)型,在C#語(yǔ)言中,提供了自己的字符串類(lèi)型,從而使字符串的操作如賦值、拼接等操作變得非常簡(jiǎn)單。字符串類(lèi)型是引用類(lèi)型,用關(guān)鍵字string來(lái)定義,string對(duì)象保存在堆中,因此,當(dāng)把一個(gè)字符串變量賦給另一個(gè)字符串變量時(shí),會(huì)發(fā)生對(duì)內(nèi)存中同一個(gè)字符串的兩個(gè)引用。例如:stringstr1=”我的姓名是:”;stringstr2=”ZhangSan”;stringstr3=str1+str2;stringstr4=str3;//str3、str4引自同一個(gè)字符串(改變?cè)址闹禃?huì)怎么樣?)常量字符串的值用一對(duì)雙撇號(hào)表示,字符串中也可以包含轉(zhuǎn)義符,由于轉(zhuǎn)義符用\開(kāi)頭,因此,表示文件路徑時(shí),要采用連續(xù)兩個(gè)雙斜杠。例如:stringFileName=”C:\\MyDocments\\簡(jiǎn)歷.doc”;3.1數(shù)據(jù)類(lèi)型

2.1字符串類(lèi)型(第5章)C#語(yǔ)言還提供了另外一種替代方式,就是在字符串常量的前面加上字符@,在這個(gè)字符后的所有字符都會(huì)保持原來(lái)的含義,而不會(huì)解釋為轉(zhuǎn)義符。例如:stringFileName=@”C:\MyDocments\簡(jiǎn)歷.doc”;所謂數(shù)組就是有序的、同一類(lèi)型數(shù)據(jù)的集合。數(shù)組實(shí)質(zhì)上是包含多個(gè)變量的數(shù)據(jù)結(jié)構(gòu),其中每一個(gè)變量叫做數(shù)組的元素,全部元素的類(lèi)型相同,就是數(shù)組的類(lèi)型。數(shù)組元素可以通過(guò)索引值進(jìn)行訪問(wèn)。C#語(yǔ)言中索引號(hào)是從0開(kāi)始的。根據(jù)使用的需要,數(shù)組可以是一維的、二維的或多維的。數(shù)組中的元素按索引順序在內(nèi)存中連續(xù)存放,每個(gè)元素所占空間大小相同。(1)數(shù)組的聲明聲明數(shù)組主要是聲明數(shù)組元素的類(lèi)型、數(shù)組名稱(chēng)和數(shù)組的大小。格式:數(shù)據(jù)類(lèi)型[]數(shù)組名;//一維數(shù)組聲明數(shù)據(jù)類(lèi)型[,]數(shù)組名;//二維數(shù)組的聲明3.1數(shù)據(jù)類(lèi)型

2.2數(shù)組類(lèi)型(第6章)說(shuō)明:①數(shù)據(jù)類(lèi)型可以是C#語(yǔ)言中任意的數(shù)據(jù)類(lèi)型,數(shù)組名為一個(gè)合法的標(biāo)識(shí)符;[]指明該標(biāo)識(shí)符是一個(gè)數(shù)組類(lèi)型變量。②C#語(yǔ)言中,數(shù)組的聲明并不為數(shù)組元素分配內(nèi)存,因此,[]中不能給定數(shù)組中元素的個(gè)數(shù)即數(shù)組的大小。由于定義語(yǔ)句僅僅是基本信息定義,此時(shí)還不能訪問(wèn)數(shù)組元素,必須待分配內(nèi)存后方可訪問(wèn)元素。

(2)數(shù)組的內(nèi)存分配在定義完數(shù)組后,必須通過(guò)運(yùn)算符new為它分配內(nèi)存,才能對(duì)數(shù)組元素進(jìn)行訪問(wèn)。

格式:數(shù)組名=new數(shù)組類(lèi)型[數(shù)組大小];//一維數(shù)組數(shù)組名=new數(shù)組類(lèi)型[第一維大小,第二維大小];//二維數(shù)組通常,將數(shù)組定義與內(nèi)存分配合在一起,簡(jiǎn)化編程代碼。例如:int[]a=newint[10];float[,]b=newfloat[3,4];3.1數(shù)據(jù)類(lèi)型

說(shuō)明:①new操作符用來(lái)創(chuàng)建數(shù)組并使用默認(rèn)值初始化數(shù)組元素。使用默認(rèn)值進(jìn)行元素初始化的方式,稱(chēng)之為數(shù)組動(dòng)態(tài)初始化。本例,所有元素初始化為0;②對(duì)于對(duì)于二維數(shù)組,若用來(lái)描述矩陣或行列式,則第一維表示行數(shù),第二維表示列數(shù)。

(3)數(shù)組的初始化可以在聲明數(shù)組并分配內(nèi)存時(shí)對(duì)全部元素進(jìn)行初始化。若對(duì)全部元素顯示初始化,此時(shí)不需要指定數(shù)組中元素的個(gè)數(shù),因?yàn)槌跏蓟斜碇邪脑鼐痛_定了數(shù)組中元素的個(gè)數(shù)。特別說(shuō)明:①數(shù)組聲明語(yǔ)句:只是聲明了數(shù)組的性質(zhì),并未開(kāi)辟存儲(chǔ)空間。②new類(lèi)型[數(shù)組大小]或new類(lèi)型[第一維大小,第二維大小]才給數(shù)組所有元素開(kāi)辟存儲(chǔ)空間,并將首地址賦給數(shù)組名。3.1數(shù)據(jù)類(lèi)型

(4)數(shù)組元素的訪問(wèn)數(shù)組初始化成功后,可以通過(guò)索引的方式來(lái)訪問(wèn)其中的元素。索引可以是整數(shù),可以是整型變量,索引不能越界。例如:MyArray[0]、NumArray[2,3]、MyArray[i]、NumArray[i,j]等。若將循環(huán)變量當(dāng)作索引,則通過(guò)循環(huán)可以遍歷這個(gè)數(shù)組元素。在C#中,object是所有數(shù)據(jù)類(lèi)型的根類(lèi)型。它是一種通用類(lèi)型,可以用來(lái)表示任何其他類(lèi)型的值。在C#中,所有的數(shù)據(jù)類(lèi)型都直接或間接地繼承自object類(lèi)。因此,object是.NET框架中的基本類(lèi)型。由于所有數(shù)據(jù)類(lèi)型都可以隱式地轉(zhuǎn)換為object類(lèi)型,因此可以使用object類(lèi)型來(lái)存儲(chǔ)各種類(lèi)型的數(shù)據(jù)。這使得在需要處理不同類(lèi)型的數(shù)據(jù)時(shí)變得更加靈活,但同時(shí)也可能導(dǎo)致一些類(lèi)型安全性的問(wèn)題,因?yàn)樾枰谑褂脮r(shí)進(jìn)行類(lèi)型轉(zhuǎn)換。3.1數(shù)據(jù)類(lèi)型

2.3通用類(lèi)型object在使用object類(lèi)型時(shí),常見(jiàn)的操作是將特定類(lèi)型的數(shù)據(jù)裝箱(boxing)到object類(lèi)型中,以及從object類(lèi)型中拆箱(unboxing)為特定類(lèi)型。裝箱是將值類(lèi)型(如int、float、struct等)轉(zhuǎn)換為引用類(lèi)型(object),而拆箱是將之前裝箱的對(duì)象轉(zhuǎn)換回原始的值類(lèi)型。盡管object類(lèi)型在某些情況下很有用,但由于裝箱和拆箱操作的性能開(kāi)銷(xiāo)較大,可能會(huì)導(dǎo)致性能問(wèn)題。因此,在編寫(xiě)高性能和類(lèi)型安全的代碼時(shí),建議盡量避免過(guò)多使用object類(lèi)型,而是使用具體的數(shù)據(jù)類(lèi)型。其它引用類(lèi)型包括類(lèi)類(lèi)型、接口類(lèi)型、委托類(lèi)型。3.1數(shù)據(jù)類(lèi)型

2.3其他引用類(lèi)型3.1數(shù)據(jù)類(lèi)型3var類(lèi)型推斷var關(guān)鍵字:在C#中,var關(guān)鍵字用于聲明隱式類(lèi)型的局部變量(不能用于字段)。它允許你在不顯式指定數(shù)據(jù)類(lèi)型的情況下聲明變量。相反,數(shù)據(jù)類(lèi)型是由編譯器根據(jù)變量在初始化時(shí)賦的值來(lái)確定的。var只是一種“語(yǔ)法速記”,并非是一種特殊變量;var只能用于局部變量,不能用于字段;使用var聲明變量時(shí),必須進(jìn)行初始化,且一量推斷出變量類(lèi)型,就不可更改。以下是使用var關(guān)鍵字的示例:

varnumber=42;//編譯器會(huì)推斷'number'是int類(lèi)型

varname="JohnDoe";//編譯器會(huì)推斷'name'是string類(lèi)型

//下面的代碼將導(dǎo)致編譯錯(cuò)誤,因?yàn)?var'要求在聲明時(shí)進(jìn)行初始化。

//varx;//初始化后不能更改推斷的類(lèi)型。下面的代碼也會(huì)導(dǎo)致錯(cuò)誤:

//varsomeVar=10;someVar="Hello";//錯(cuò)誤3.1數(shù)據(jù)類(lèi)型3var類(lèi)型推斷//'var'也可以與復(fù)雜類(lèi)型如數(shù)組或匿名類(lèi)型一起使用:

varnumbersArray=newint[]{1,2,3,4};varperson=new{Name="Alice",Age=30};//對(duì)于匿名類(lèi)型,需謹(jǐn)慎使用,因?yàn)樗鼈冊(cè)谄渌诘淖饔糜蛑獾氖褂糜邢蕖?/p>

//'var'并不限于單個(gè)變量聲明:

vara=10,b=20,c=30;//'var'在編譯時(shí)會(huì)被解析,實(shí)際數(shù)據(jù)類(lèi)型仍然為編譯器所知。雖然var提供了更簡(jiǎn)潔的語(yǔ)法,但請(qǐng)注意使用時(shí)要明確初始化,并且在合適的情況下使用,以保持代碼的可讀性和清晰性。字面量(literal)是源代碼中鍵人的數(shù)字或字符串,表示一個(gè)指定類(lèi)型的明確的、固定的值。

⑴整數(shù)字面量

整型常量是整數(shù)類(lèi)型的數(shù)據(jù),有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制等四種表示形式。具體如下:

①二進(jìn)制:以0b/0B開(kāi)頭,由數(shù)字0和1組成的數(shù)字序列,例如byteb=0b01111110。

②八進(jìn)制:以數(shù)字0開(kāi)頭,且其后是由0~7的整數(shù)組成的數(shù)字序列。例如:0347。

③十進(jìn)制:由數(shù)字0~9組成的整數(shù)組成的數(shù)字序列。例如:1987。十進(jìn)制數(shù)第1位不能是0(0本身除外)。

④十六進(jìn)制:以0x/0X開(kāi)頭,并且后跟0~9、A~F組成的數(shù)字序列。例如:0x25AF。

整數(shù)默認(rèn)為十進(jìn)制int型,若整數(shù)大小超出int范圍,則必須在整數(shù)后面加上L(或l)以表明為長(zhǎng)整型數(shù)。3.2字面量與變量1.

字面量的表示整數(shù)字面量格式的形式:3.2字面量與變量1.

字面量的表示說(shuō)明:只有整數(shù)類(lèi)型字面量可以用十六進(jìn)制或二進(jìn)制格式表示。十六進(jìn)制和二進(jìn)制記法用前級(jí)指定,而實(shí)際的數(shù)據(jù)類(lèi)型用后級(jí)指定(前綴影響表示,后綴決定類(lèi)型)。整數(shù)字面量的后綴:

⑵浮點(diǎn)數(shù)常量

浮點(diǎn)數(shù)常量就是數(shù)學(xué)中的小數(shù),分為單精度f(wàn)loat和雙精度double兩種。其中,單精度數(shù)后面用F或f結(jié)尾,而雙精度浮點(diǎn)數(shù)以D或d結(jié)尾,以標(biāo)識(shí)對(duì)應(yīng)的精度。若浮點(diǎn)數(shù)常量后不帶精度標(biāo)識(shí)符則默認(rèn)為雙精度數(shù)。浮點(diǎn)數(shù)常量還可以用指數(shù)形式來(lái)表示。具體實(shí)例如下:2e3f,3.6D,3.02e+23f浮點(diǎn)類(lèi)型中還用一種精度更高的decimal類(lèi)型,它用128位來(lái)表示,其精度可以達(dá)到28位,取值范圍為±1.0*10-28直到±7.9*1028,由于decimal的高精度性,更適合于財(cái)務(wù)和貨幣計(jì)算。如果希望一個(gè)小數(shù)被當(dāng)成decimal類(lèi)型使用,需要使用后綴m或M。例如:DecimalmyMoney=1.12m;3.2字面量與變量floata;a=3.14;Console.WriteLine(a.GetType());////錯(cuò)誤:要請(qǐng)使用F/f后綴創(chuàng)建float

⑶字符常量字符常量用于表示一個(gè)字符,一個(gè)字符常量要用一對(duì)英文半角格式的單撇號(hào)引起來(lái),它可以時(shí)英文字母、數(shù)字、標(biāo)點(diǎn)符號(hào)以及由抓以序列表示的特殊字符。具體如下:‘a(chǎn)’‘2’‘\r’’‘\u0000’上面實(shí)例中,’\u0000’表示一個(gè)空白字符,即在單引號(hào)之間只有一個(gè)表示空白的空格。之所以能這樣表示是因?yàn)镃#采用的時(shí)Unicode字符集,Unicode字符集字符以\u開(kāi)頭,空格字符在Unicode碼中對(duì)應(yīng)的值位’\u0000’。

⑷字符串常量字符串常量用于表示一串連續(xù)的字符,一個(gè)字符串常量要用一對(duì)英文半角格式的雙引號(hào)”“引起來(lái)。具體實(shí)例如下:“abcd123”“12345”“welcometochina\n”“”一個(gè)字符串可以包含一個(gè)字符或多個(gè)字符,也可以不包含任何字符,即長(zhǎng)度為0。特別提示:C++中由于沒(méi)有字符串這個(gè)類(lèi)型,所以字符串都以\0作為結(jié)束標(biāo)志。而在C#中有string類(lèi),是字符串類(lèi)型,字符串不用指定結(jié)束符標(biāo)志。3.2字面量與變量

⑸布爾字面量

布爾類(lèi)型的兩個(gè)字面量true和false,該常量用于表示邏輯結(jié)果真與假。

⑹null字面量

null字面量只有一個(gè)值null,表示對(duì)象的引用為空。

3.2字面量與變量

變量可在程序運(yùn)行的過(guò)程中動(dòng)態(tài)地修改其值,這是它與常量的最大區(qū)別。變量是一個(gè)特定的數(shù)據(jù)實(shí)體,它有預(yù)定義的數(shù)據(jù)類(lèi)型,并且可在內(nèi)存中某個(gè)唯一地址存放指定類(lèi)型的值。變量具有四個(gè)屬性:名字、類(lèi)型、變量值和占用的內(nèi)存地址。

變量在使用前必須先聲明,聲明的格式如下:

數(shù)據(jù)類(lèi)型變量名1[=初值],變量名2[=初值],…;

變量名表中的變量與變量之間用逗號(hào)分隔開(kāi)。一旦變量的類(lèi)型被指定,就只能對(duì)變量執(zhí)行該變量類(lèi)型支持的操作。變量在定義時(shí)可以初始化,也可以不進(jìn)行初始化。

例如:

intNum=10;

floatValue=100,Pice=25;

floatTotal;

Total=Num*Value*Price;3.2字面量與變量2.變量

(1)變量的初始化與賦值

變量在定義時(shí)同時(shí)給與值,稱(chēng)之為變量的初始化,而變量的賦值指的是先定義變量,在其它地方通過(guò)賦值操作給變量賦值。

(2)變量的數(shù)據(jù)類(lèi)型

變量名只是一個(gè)標(biāo)識(shí)符,真正有價(jià)值的是它的值。變量定義時(shí)約定數(shù)據(jù)類(lèi)型的目的在于:一是開(kāi)辟多少單元;二是數(shù)據(jù)存儲(chǔ)格式與讀取方式。單元數(shù)量與格式就限制了數(shù)據(jù)的范圍,即變量值的范圍。聲明變量時(shí)顯示約定的數(shù)據(jù)類(lèi)型就是前面講過(guò)的所有類(lèi)型之一,如int,long,char等。因此,根據(jù)數(shù)據(jù)類(lèi)型的不同,對(duì)應(yīng)的變量也分別稱(chēng)為整數(shù)類(lèi)型變量、浮點(diǎn)型變量、字符變量、布爾型變量、結(jié)構(gòu)變量、類(lèi)變量等,變量實(shí)際就是對(duì)象。

變量實(shí)際就是一個(gè)臨時(shí)存放數(shù)據(jù)的地方。程序中可以將指定的數(shù)據(jù)存放到變量中,需要時(shí)取出使用。變量對(duì)程序的執(zhí)行時(shí)至關(guān)重要,變量必須有值才能參加運(yùn)算,所以在程序設(shè)計(jì)時(shí)必須對(duì)變量進(jìn)行初始化或在適當(dāng)時(shí)候賦值。3.2字面量與變量常量常量通過(guò)const來(lái)定義,格式如下:

[修飾符]const數(shù)據(jù)類(lèi)型常量名=值;修飾符可以是:new、public、protected、internal和private。

例如:

publicconstdoublePI=3.14159;privateconstfloatPrice=100;publicconststringAutuorName=”Macro”;

使用常量的好處是:第一,直觀。例如PI一看就是圓周率;第二,一改全改。例如,一旦市場(chǎng)Price值發(fā)生變花,只需要在程序的常量聲明處進(jìn)行修改即可,所有使用該常量的地方不必修改。3.2字面量與變量自動(dòng)類(lèi)型轉(zhuǎn)換也叫隱式類(lèi)型轉(zhuǎn)換,是指兩種數(shù)據(jù)類(lèi)型在轉(zhuǎn)換的過(guò)程中不需要顯示操作,程序隱式自動(dòng)完成。自動(dòng)類(lèi)型轉(zhuǎn)換需要滿足的條件時(shí):①兩種數(shù)據(jù)類(lèi)型彼此兼容;②目標(biāo)類(lèi)型的范圍大于被轉(zhuǎn)換對(duì)象的取值范圍。3.2字面量與變量3.1自動(dòng)類(lèi)型轉(zhuǎn)換

在C#程序中,當(dāng)把一種數(shù)據(jù)類(lèi)型的值賦給另外一種數(shù)據(jù)類(lèi)型的變量時(shí),需要進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。3變量的類(lèi)型轉(zhuǎn)換bytex=5;inty=x;例如:

①小范圍整數(shù)類(lèi)型向大范圍整數(shù)類(lèi)型的轉(zhuǎn)換:sbyte->short->int->long

②整數(shù)類(lèi)型轉(zhuǎn)換為float類(lèi)型:char、byte、sbyte、short、ushort、int、uint、long->float>double。

整數(shù)類(lèi)型(Integer)變量可以存儲(chǔ)整數(shù)值。C#預(yù)定義的8個(gè)整數(shù)類(lèi)型,其類(lèi)型名、關(guān)聯(lián)的類(lèi)、數(shù)的取值范圍等如表2-1所示,最常用的整數(shù)類(lèi)型是int。3.1數(shù)據(jù)類(lèi)型

1.1整數(shù)類(lèi)型

整數(shù)類(lèi)型CTS類(lèi)型數(shù)值范圍格式有符號(hào)singalsbyteSystem.SByte-128~127(-27~27-1)帶符號(hào)8位整數(shù)shortSystem.Int16-32768~32767(-215~215-1)帶符號(hào)16位整數(shù)intSystem.Int32-2147483648~2147483647帶符號(hào)32位整數(shù)longSystem.Int64-263~263-1帶符號(hào)64位整數(shù)無(wú)符號(hào)unsingalbyteSystem.Byte0~255(0~28-1)無(wú)符號(hào)8位整數(shù)ushortSystem.Uint160~65535(0~216-1)無(wú)符號(hào)16位整數(shù)uintSystem.Uint320~4294967295(0~232-1)無(wú)符號(hào)32位整數(shù)ulongSystem.Uint640~264-1無(wú)符號(hào)64位整數(shù)根據(jù)實(shí)數(shù)的精度、范圍等要求,C#為實(shí)數(shù)定義了浮點(diǎn)類(lèi)型(float、double)和decimal類(lèi)型。如下表所示。

Decimal類(lèi)型是一種專(zhuān)門(mén)用于財(cái)務(wù)計(jì)算的類(lèi)型。如果要將數(shù)值以decimal類(lèi)型來(lái)處理,就應(yīng)該使用M(或m)將其強(qiáng)制指定為decimal類(lèi)型。例如:decimalnum=123.567M;與float和double不同,decimal可以準(zhǔn)確地表示分?jǐn)?shù)。3.1數(shù)據(jù)類(lèi)型

1.2實(shí)數(shù)類(lèi)型

CTS類(lèi)型數(shù)值范圍小數(shù)位格式floatSystem.Single±1.5×10-45~±3.4×1038732位單精度浮點(diǎn)數(shù)doubleSystem.Double-±5.0×10-324~±1.7×1030815/1664位雙精度浮點(diǎn)數(shù)decimalSystem.Decimal±1.0×10-28~±7.9×102828128位高精度實(shí)數(shù)

強(qiáng)制類(lèi)型轉(zhuǎn)換也叫顯示類(lèi)型轉(zhuǎn)換,是指兩種數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換需要進(jìn)行顯示聲明。當(dāng)兩種類(lèi)型彼此不兼容或者目標(biāo)類(lèi)型的取值范圍小于原類(lèi)型時(shí),自動(dòng)轉(zhuǎn)換無(wú)法進(jìn)行,這時(shí)就需要采用強(qiáng)制類(lèi)型轉(zhuǎn)換。

強(qiáng)制類(lèi)型轉(zhuǎn)換的聲明格式:

例如:特別提示:在對(duì)變量進(jìn)行強(qiáng)制轉(zhuǎn)換時(shí),若將取值范圍大的類(lèi)型向取值小的類(lèi)型轉(zhuǎn)換時(shí)極容易造成數(shù)據(jù)精度的丟失,需要引起高度重視。一旦精度丟失過(guò)大將造成程序結(jié)果的不可信,必須避免數(shù)據(jù)精度的丟失。3.2字面量與變量3.2

強(qiáng)制類(lèi)型轉(zhuǎn)換intnum=4;shortb=(short)num;(目標(biāo)類(lèi)型)表達(dá)式;

下面通過(guò)一個(gè)案例說(shuō)明強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換丟失精度的問(wèn)題。程序輸出結(jié)果:b=298

a=42上述代碼中,將int型變量b的數(shù)據(jù)按byte型進(jìn)行強(qiáng)制轉(zhuǎn)換后賦給byte型變量a的過(guò)程中發(fā)生了精度丟失,且精度丟失嚴(yán)重。這種現(xiàn)象是這樣發(fā)生的呢?3.2字面量與變量staticvoidMain(string[]args){bytea;intb=298;a=(byte)b;Console.WriteLine("b="+b);Console.WriteLine("a="+a);}

對(duì)于int型變量b,其值為298,在內(nèi)存是以二進(jìn)制存儲(chǔ)的,占4個(gè)字節(jié),其具體內(nèi)容如圖所示,當(dāng)被強(qiáng)制轉(zhuǎn)換為byte類(lèi)型(占一個(gè)字節(jié))時(shí),前面三個(gè)高位字節(jié)的數(shù)據(jù)被丟失,僅將低位一個(gè)字節(jié)的數(shù)據(jù)保留下來(lái)賦給變量a,因此,在轉(zhuǎn)換過(guò)程中,使數(shù)值發(fā)生了變化。3.2字面量與變量

裝箱操作是將一個(gè)值類(lèi)型轉(zhuǎn)換為引用類(lèi)型。3.2字面量與變量3.3裝箱與拆箱inti=256;objectIobjected=i;拆箱允許將引用類(lèi)型轉(zhuǎn)換為值類(lèi)型。intj=(int)Iobjected;變量的生存期:變量從存在直到消亡的時(shí)期稱(chēng)之為變量的生存期。變量的作用域:變量只能在它的作用范圍內(nèi)才可以被使用,這個(gè)作用范圍叫做變量的作用域。3.2字面量與變量4.1成員變量(字段)的作用域類(lèi)的成員變量(字段)可分為兩種,即靜態(tài)成員變量和實(shí)例成員變量。變量的生存期與作用域classTest{intx=45;staticinty=90;}//////實(shí)例字段//靜態(tài)字段變量的生存期:變量從存在直到消亡的時(shí)期稱(chēng)之為變量的生存期。變量的作用域(可見(jiàn)性):變量只能在它的作用范圍內(nèi)才可以被使用,這個(gè)作用范圍叫做變量的作用域。3.2字面量與變量成員變量(字段)的作用域類(lèi)的成員變量(字段)可分為兩種,即靜態(tài)成員變量和實(shí)例成員變量。變量的生存期與作用域classTest{intx=45;staticinty=90;}//////實(shí)例字段//靜態(tài)字段局部變量的作用域局部變量生存期和可見(jiàn)性?xún)H限于聲明它們的塊及其內(nèi)嵌塊。3.4運(yùn)算符與表達(dá)式基本概念運(yùn)算符:運(yùn)算符是一個(gè)符號(hào),用于返回單個(gè)結(jié)果的操作,比如賦值運(yùn)算符=,算術(shù)運(yùn)算符+、-、*、/等。intx,y,z;x=1;z=y=2;//////操作數(shù)可以是:字面量、常量、變量、方法調(diào)用的返回值、元素訪問(wèn)器(如數(shù)組訪問(wèn)器、索引器)、其他表達(dá)式??梢允褂眠\(yùn)算符組合表達(dá)式以創(chuàng)建更復(fù)雜的表達(dá)式,如下面的表達(dá)式所示,它有2個(gè)運(yùn)算符和3個(gè)操作數(shù)。x+y*z;//*號(hào)優(yōu)先級(jí)更高//x+(y+z)表達(dá)式:是運(yùn)算符和操作數(shù)的字符串。表達(dá)式會(huì)將操作數(shù)作為運(yùn)算符的輸入,執(zhí)行某個(gè)操作,并基本該操作返回一個(gè)值。操作數(shù):作為運(yùn)算符輸入的數(shù)據(jù)元素。例如:賦值表達(dá)式3.4運(yùn)算符與表達(dá)式7.運(yùn)算符優(yōu)先級(jí)優(yōu)先級(jí)運(yùn)算符類(lèi)別運(yùn)算符1基本(初級(jí))運(yùn)算符a.x,f(x),a[x],x++,x--,new,typeof、checked、unchecked2單目(一元)運(yùn)算符+、-、!,~,++x,--x、(T)x3乘除運(yùn)算符*,/,%4加減運(yùn)算符+(加號(hào)),-(減號(hào))5移位運(yùn)算符<<,>>6關(guān)系和類(lèi)型運(yùn)算符<,>,<=,>=、is、as7相等運(yùn)算符==,!=8位與&9位異或^10位或|11關(guān)系邏輯運(yùn)算符&&12關(guān)系邏輯運(yùn)算符||13條件運(yùn)算符?:14賦值運(yùn)算符=,*=,/=,%=,+=,-=,運(yùn)算符優(yōu)先級(jí)處理復(fù)雜表達(dá)式運(yùn)算時(shí),必須按運(yùn)算符的優(yōu)先級(jí)別來(lái)處理計(jì)算的順序,優(yōu)先級(jí)高的運(yùn)算符先執(zhí)行,級(jí)別低的后執(zhí)行,我們把這種運(yùn)算符的求值順序的處理稱(chēng)之為運(yùn)算符的優(yōu)先級(jí)。3.4運(yùn)算符與表達(dá)式7.運(yùn)算符優(yōu)先級(jí)運(yùn)算符結(jié)合性當(dāng)編譯器遇到兩個(gè)連續(xù)的相同優(yōu)先級(jí)的運(yùn)算符時(shí),求值順序由操作結(jié)合性決定。2

/

6

*

4//求值順序應(yīng)該為(2/6)*4=4/3//而不是2/(6*4)=1/12//////左結(jié)合運(yùn)算符////左結(jié)合運(yùn)算符:兩個(gè)相鄰的同優(yōu)先級(jí)的運(yùn)算符,求值順序?yàn)閺淖蟮接仪笾怠S医Y(jié)合運(yùn)算符:兩個(gè)相鄰的同優(yōu)先級(jí)的運(yùn)算符,求值順序?yàn)閺挠业阶笄笾怠3x值運(yùn)算符以外,其他二元運(yùn)算符是左結(jié)合的。賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合的。運(yùn)算符類(lèi)別結(jié)合性賦值運(yùn)算符右結(jié)合其他二元運(yùn)算符左結(jié)合條件運(yùn)算符右結(jié)合可以使用小括號(hào)顯式地設(shè)定子表達(dá)式的求值順序。括號(hào)內(nèi)的子表達(dá)式:覆蓋優(yōu)先級(jí)和結(jié)合性規(guī)則;求值順序從嵌套的最內(nèi)層到最外層。3.4運(yùn)算符與表達(dá)式7.運(yùn)算符優(yōu)先級(jí)運(yùn)算符結(jié)合性示例:條件運(yùn)算符的右結(jié)合性。intx=10;inty=5;intresult=x>y?x:y>0?y:0;////////右結(jié)合運(yùn)算符首先計(jì)算最右邊的條件y>0,如果為真,則結(jié)果為y;否則結(jié)果為0。然后,根據(jù)外層條件x>y的結(jié)果來(lái)確定最終的結(jié)果。示例:賦值運(yùn)算符的右結(jié)合性。intx,y,z;x=1;z=y=2;//////賦值運(yùn)算符是右結(jié)合運(yùn)算符//z=(y=2);3.4運(yùn)算符與表達(dá)式7.運(yùn)算符優(yōu)先級(jí)運(yùn)算符結(jié)合性算術(shù)運(yùn)算符與算術(shù)表達(dá)式運(yùn)算符名稱(chēng)描述+加計(jì)算兩個(gè)操作數(shù)的和-減從第一個(gè)操作數(shù)減去第二個(gè)操作數(shù)*乘計(jì)算兩個(gè)操作數(shù)的乘積/除用第二個(gè)操作數(shù)除第一個(gè)。當(dāng)兩個(gè)操作數(shù)均為整數(shù)時(shí),將截取整數(shù)部分%求余用第二個(gè)操作數(shù)除第一個(gè)操作數(shù),并返回余數(shù)++遞增對(duì)操作數(shù)+1--遞減對(duì)操作數(shù)-1intx=1;int

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論