運算符與表達式課件_第1頁
運算符與表達式課件_第2頁
運算符與表達式課件_第3頁
運算符與表達式課件_第4頁
運算符與表達式課件_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章運算符與表達式4.1引言4.2單目運算符4.3雙目運算符4.4三目運算符4.5其他運算符4.6標點符號4.7運算符優(yōu)先級4.8正則表達式4.9小結第4章運算符與表達式4.1引言4.1引言C#提供了多種數(shù)據(jù)類型,以滿足各種數(shù)據(jù)存儲的需要,同時也提供了多種運算符來滿足處理、計算數(shù)據(jù)的需要。根據(jù)處理操作對象的個數(shù)不同,運算符大致分為三類。單目運算符,又稱一元運算符;雙目運算符,又稱二元運算符;三目運算符,又稱三元運算符。大部分運算符都是雙目運算符,只有幾個單目運算符和一個三目運算符,另外還包括幾個其他運算符,下面分別介紹這些運算符。4.1引言C#提供了多種數(shù)據(jù)類型,以滿足各種數(shù)據(jù)存儲的需要4.2單目運算符常見的單目運算符有+(一元加)-(一元減)!(邏輯非)~(按位求補)++(一元遞增)--(一元遞減)type(強制類型轉換運算符)一元加和一元減運算符對所有數(shù)值類型均適用;邏輯非運算符只對布爾類型適用;按位求補運算符適用于int、uint、long和ulong類型;遞增和遞減運算符適用于數(shù)值類型和枚舉類型。注意,為了提高程序代碼的可讀性,單目運算符應該緊挨著它們的操作數(shù),不能添加任何干擾性的空字符。4.2單目運算符常見的單目運算符有一元加和一元減運算符一元加和一元減運算符用于改變一個數(shù)值變量的正負號。注意,一元加運算符不會對操作對象進行任何改變。示例:decimalbalance=100;Console.WriteLine("輸出初始balance的值:{0}",balance);balance=-balance;Console.WriteLine("輸出改變后的值balance的值:{0}",balance);balance=+balance;Console.WriteLine("輸出改變后的值balance的值:{0}",balance);Console.Read();執(zhí)行上述代碼,結果為100,-100,-100。一元加和一元減運算符一元加和一元減運算符用于改變一個數(shù)值變一元加和一元減運算符上述代碼中,需要特別說明的是WriteLine()函數(shù),該函數(shù)最常用的使用方法如下。Console.WriteLine("HelloWorld!")或Console.WriteLine(x),直接輸出括號內字符串常量或某變量的值。Console.WriteLine("x={0}",x),輸出字符串,且該字符串中包含某變量。其中,{x}為占位符,輸出時它會被變量x的值代替。一元加和一元減運算符上述代碼中,需要特別說明的是WriteL邏輯非運算符邏輯非運算符(!)主要用于對操作對象進行取反操作,操作對象只能是bool類型的變量。示例及運行結果:

boola=false;Console.WriteLine("輸出!a的值為{0}",!a);邏輯非運算符邏輯非運算符(!)主要用于對操作對象進行取反操作按位求補運算符按位求補運算符(~)用于對操作數(shù)執(zhí)行按位求補運算,其效果相當于對每一位執(zhí)行反轉,按位求補運算符是為int、uint、long和ulong類型預定義的。示例及運行結果:

staticvoidMain(string[]args){inta=2;intb=~a;Console.WriteLine(Convert.ToString(a,2));Console.WriteLine(Convert.ToString(b,2));Console.Read();}按位求補運算符按位求補運算符(~)用于對操作數(shù)執(zhí)行按位求補運一元遞增運算符和一元遞減運算符一元遞增運算符(++),它可以用表達式a++或++a實現(xiàn)變量a的值增1,而不必使用表達式a=a+1和a+=1。注意:此類運算符放在變量的前面稱為前置運算符,如++a;放在變量后面稱為后置運算符,如a++。前置運算符與后置運算符有所區(qū)別,前置運算符先改變變量的值,然后再改變表達式的值;而后置運算符先改變表達式的值,然后再改變變量的值,例如:

j=i++;//相當于j=i;i=i+1;j=++i;//相當于i=i+1;j=i;一元遞增運算符和一元遞減運算符一元遞增運算符(++),它可一元遞增運算符和一元遞減運算符注意,如果試圖對表達式而不是變量參數(shù)使用遞增或者遞減運算符,將會導致語法錯誤。其中變量參數(shù)是指能夠出現(xiàn)在賦值運算符左邊的變量或表達式。例如,++(x+1)就是一個語法錯誤,因為x+1不是變量參數(shù)。一元遞增運算符和一元遞減運算符注意,如果試圖對表達式而不是變強制類型轉換運算符強制類型轉換運算符(type)在第3章有過介紹,作用是顯式轉換變量類型。示例:

inta,b;doublej;a=2;j=a;Console.WriteLine("輸出j的值為{0}",j);b=j;//編譯錯誤。需要使用強制類型轉換符,應修改為b=(int)j。

強制類型轉換運算符強制類型轉換運算符(type)在第3章有過4.3雙目運算符常見的雙目運算符包括:算術運算符位運算符關系運算符類型測試運算符邏輯運算符條件邏輯運算符條件運算符賦值運算符其他運算符4.3雙目運算符常見的雙目運算符包括:4.3.1算術運算符與算術表達式算術運算符有+(加)、-(減)、*(乘)、/(除)和%(取余),與數(shù)學運算符的用法類似,它們的優(yōu)先級關系與數(shù)學運算也是一致的,即先乘除,后加減,同級運算之間按從左至右的順序進行運算。C#.NET中的“+”運算符有兩種用法,一種用于計算兩個操作數(shù)或表達式的和,另一種可作為連接字符串的連接符例如:1000+“++”+1100,結果生成一個新的字符串“1000++1100”。4.3.1算術運算符與算術表達式算術運算符有+(加)、-使用算術運算符staticvoidMain(string[]args){inta=8;intb=2;stringmyname="nihao!";intc=3;doublef=1.2;Console.WriteLine("輸出a+b的值為{0}",a+b);Console.WriteLine("輸出a-b的值為{0}",a-b);Console.WriteLine("輸出a+myname的值為{0}",a+myname);Console.WriteLine("輸出a*b的值為{0}",a*b);Console.WriteLine("輸出a/b的值為{0}",a/b);Console.WriteLine("輸出a/c的值為{0}",a/c);Console.WriteLine("輸出a/f的值為{0}",a/f);Console.WriteLine("輸出a%c的值為{0}",a%c);Console.Read();}注意:a/f,由于操作數(shù)不是同一個級別上的,系統(tǒng)為了不丟失精度,先將低精度操作數(shù)隱式轉換為高精度操作數(shù)。這里將整型a隱式轉換為雙精度double型,然后再運算,因此運算結果為6.666666666666667,是雙精度型,而非整型。使用算術運算符staticvoidMain(string取余運算符的詳細用法注意:C#中取余運算操作數(shù)的類型為數(shù)值類型,例如浮點型和字符型,而其他語言中取余運算符的操作數(shù)只能為整數(shù)。示例及運行結果:

staticvoidMain(string[]args){inta=8,j=3,b=-3,c=-8;doubled=8.1;Console.WriteLine("輸出a%j的值為{0}",a%j);Console.WriteLine("輸出a%b的值為{0}",a%b);Console.WriteLine("輸出c%j的值為{0}",c%j);Console.WriteLine("輸出d%j的值為{0}",d%j);Console.Read();}取余運算符的詳細用法注意:C#中取余運算操作數(shù)的類型為數(shù)值4.3.2位運算符與位表達式位運算符用于對操作數(shù)的位進行運算,常用二元位運算符如右表。

運算符類別操作&二元與|二元或^二元異或<<二元左移>>二元右移4.3.2位運算符與位表達式位運算符用于對操作數(shù)的位進行按位與此運算符的作用是將兩個操作數(shù)對應的每一個位分別進行邏輯與操作,具體規(guī)則為:與1相與,結果不變;與0相與,結果為0。例如,計算3&5,運算過程如下。 3: 00000011 5:(&) 00000101 3&5: 00000001運算結果為1。使用按位與操作可以將操作數(shù)的若干位置0,其他位不變。按位與此運算符的作用是將兩個操作數(shù)對應的每一個位分別進行邏輯按位或此運算符的作用是將兩個操作數(shù)對應的每一位分別進行邏輯或操作,具體規(guī)則為:與1相或,結果為1;與0相或,結果不變。例如,計算3|5,運算過程如下。3: 00000011 5:(|) 00000101 3|5: 00000111運算結果為7。使用按位或操作可以將操作數(shù)中的若干位置1,其他位不變。按位或此運算符的作用是將兩個操作數(shù)對應的每一位分別進行邏輯或按位異或此運算符的作用是將兩個操作數(shù)對應的每一位進行異或,具體規(guī)則為:若對應位相同,則該位的運算結果為0;若對應位不同,則該位的運算結果為1。例如,計算3^5,運算過程如下。 3: 00000011 5:(^) 00000101 3^5: 00000110使用按位異或操作可以將操作數(shù)中的若干指定位的值翻轉。如果使某位與0異或,結果是該位的原值;如果使某位與1異或,則結果與該位原來的值相反。按位異或此運算符的作用是將兩個操作數(shù)對應的每一位進行異或,具移位運算符移位運算符有<<(左移運算符)、>>(右移運算符)兩個。左移是按照指定的位數(shù)將一個數(shù)的二進制值向左移位。左移后,低位補0,移出的高位舍棄。右移是按照指定的位數(shù)將一個數(shù)的二進制值向右移位。右移后,移出的低位舍棄。注意:若右移運算符的操作數(shù)是int或long型,最高位為符號位;若該操作數(shù)是非負數(shù),則最高位設為0;若操作數(shù)為負數(shù),則最高位設為1。若右移運算符的操作數(shù)為uint或者ulong型,沒有符號位,則操作數(shù)各位依次右移,高位設為0。移位運算符移位運算符有<<(左移運算符)、>>(右移運算符)移位運算符移位運算符示例:staticvoidMain(string[]args){inta=2,b=-8;intc,d;Console.WriteLine("輸出a的值為{0}",a);c=a<<2;d=a>>2;Console.WriteLine("輸出a左移兩位后的值為{0}",c);Console.WriteLine("輸出a右移兩位后的值為{0}",d);Console.WriteLine("輸出b右移兩位后的值為{0}",b>>2);Console.WriteLine("輸出a的值為{0}",a);Console.Read();}移位運算符移位運算符示例:4.3.3關系運算符與關系表達式在解決許多問題時都需要進行情況判斷,對復雜的條件進行邏輯分析。C#中也提供了用于比較、判斷的關系運算符和用于邏輯分析的邏輯運算符。關系運算符是比較簡單的一種邏輯運算。通過關系運算符將兩個操作數(shù)連接起來,即為關系表達式。關系表達式的結果為bool類型,值只能為true或false。關系運算符包括==、!=、<、>、<=和>=。其中,<、>、<=、和>=運算符適用于整數(shù)類型、浮點類型和decimal類型;==和!=運算符適用于整數(shù)類型、浮點類型、decimal類型、布爾類型、枚舉類型、引用類型、字符串類型和委托類型。4.3.3關系運算符與關系表達式在解決許多問題時都需要常用關系運算符C#中的符號標準數(shù)學中的符號C#中的條件范例C#中的條件含義===x==yx等于y!=≠x!=yx不等于y>>x>yx大于y<<x<yx小于y>=≥x>=yx大于等于y常用關系運算符C#中的符號標準數(shù)學中的符號C#中的條件范例C使用關系運算符

classProgram{enumRange:long{max=214L,min=123L};staticvoidMain(string[]args){boolx=false,y=true;Console.WriteLine("{0}",x==y);Rangea=Range.max,b=Range.min;Console.WriteLine("{0}",a==b);stringm="testequal";stringn=m;Console.WriteLine("{0}",m==n);Console.Read();}}使用關系運算符classProgram4.3.4類型測試運算符與類型測試表達式類型測試運算符主要用于更安全地進行強制類型轉換,包括is運算符和as運算符。is運算符用于查看未知變量是否為給定類型的變量,或者是否為給定類型派生出來的類型的變量。如果是,則返回true。is運算符的語法形式如下:<obj>is<type>4.3.4類型測試運算符與類型測試表達式類型測試運算符4.3.4類型測試運算符與類型測試表達式is運算符示例及運行結果:staticvoidMain(string[]args){stringa="yes";intb=0;if(aisstring)Console.WriteLine("Itisastring");elseConsole.WriteLine("Itisnotastring");if(bisstring)Console.WriteLine("Itisastring");elseConsole.WriteLine("Itisnotastring");Console.Read();}

4.3.4類型測試運算符與類型測試表達式is運算符示例及運行4.3.4類型測試運算符與類型測試表達式as運算符用于將一個值顯式地轉換(使用引用轉換或裝箱轉換)為一個給定的引用類型。如果要轉換的類型與指定的類型兼容,轉換就會成功執(zhí)行;如果類型不兼容,as運算符就會返回null。這里的兼容是指對象是該類型或派生于該類型。注意as運算符必須與引用類型一起使用,int等值類型不能使用。as運算符的語法形式如下:<obj>as<type>4.3.4類型測試運算符與類型測試表達式as運算符用于將一個4.3.4類型測試運算符與類型測試表達式as運算符示例及運行結果:staticvoidMain(string[]args){objecta1="nihao";objecta2=12;strings1=a1asstring;strings2=a2asstring;Console.WriteLine("輸出s1的值{0}",s1);Console.WriteLine("輸出s2的值{0}",s2);Console.Read();}4.3.4類型測試運算符與類型測試表達式as運算符示例及運4.3.5邏輯運算符與邏輯表達式只有簡單的關系比較是遠不能滿足實際編程需要的,還需要使用邏輯運算符將簡單的關系表達式連接起來,構成比較復雜的邏輯表達式。為了在判斷過程中測試多個條件,C#語言提供了一些邏輯運算符和條件邏輯運算符,可以利用它們組合成復雜的條件。注意,邏輯運算符的操作對象必須是bool類型,且邏輯運算符會計算所有的操作數(shù)。4.3.5邏輯運算符與邏輯表達式只有簡單的關系比較是遠常用邏輯運算符運算符類別范例結果!一元var1=!var2將var2取反后賦給var`1&二元var1=var2&var3將var2和var3取與后賦給var1|二元var1=var2|var3將var2和var3取或后賦給var1^二元var1=var2^var3將var2和var3取異或后賦給var1常用邏輯運算符運算符類別范例結果!一元var1=!var24.3.5邏輯運算符與邏輯表達式邏輯與運算符示例及運行結果:

staticvoidMain(string[]args){intgender=1,age=65;if(gender==1&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.5邏輯運算符與邏輯表達式邏輯與運算符示例及運行結4.3.5邏輯運算符與邏輯表達式邏輯或運算符示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1|(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1|(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.5邏輯運算符與邏輯表達式邏輯或運算符示例及運行結4.3.6條件邏輯運算符與條件邏輯表達式條件與(&&)和條件或(||)運算符稱為條件邏輯運算符。包含條件邏輯運算符的表達式稱為條件邏輯表達式。運算符類別范例結果&&二元var1=var2&&var3將var2和var3相與后賦給var1,僅當var2為true時,才計算var3||二元var1=var2||var3將var2和var3相或后賦給var1,僅當var2為false時,才計算var34.3.6條件邏輯運算符與條件邏輯表達式條件與(&&)4.3.6條件邏輯運算符與條件邏輯達式條件邏輯運算符&&示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1&&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1&&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.6條件邏輯運算符與條件邏輯達式條件邏輯運算符&&4.3.6條件邏輯運算符與條件邏輯表達式條件邏輯運算符||示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1||(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1||(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.6條件邏輯運算符與條件邏輯表達式條件邏輯運算符|4.3.7賦值運算符與賦值表達式賦值運算符(=)用于為變量、屬性、事件或索引器元素賦值。除了直接賦值以外,C#語言還提供了用于簡化賦值表達式的快捷賦值運算符。例如,語句c=c+3可以簡化為c+=3。運算符含義運算符含義+=加法&=位與-=減法|=位或*=乘法^=位異或/=除法~=位非++x前加<<=左移--x前減>>=右移x++后加x--后減4.3.7賦值運算符與賦值表達式賦值運算符(=)用于為4.4三目運算符三目運算符就是包含3個操作數(shù)的運算符。條件運算符是唯一的三元運算符,它由“?”和“:”兩個標點符號組成,它的3個對象均是表達式。語法形式如下:<condition>?<expression1>:<expression2>先計算條件condition,如果計算結果為true,則計算expression1的值,且整個表達式的值是expression1的值;如果計算結果為false,則計算expression2的值,且整個表達式的值是expression2的值。注意,條件計算的結果必須為bool型,否則會出錯。4.4三目運算符三目運算符就是包含3個操作數(shù)的運算符。條4.4三目運算符三目運算符示例及運行結果:

inta=1;strings=a.ToString()+"";s+=(a==1?"man":"men");Console.WriteLine(s);Console.Read();4.4三目運算符三目運算符示例及運行結果:4.5其他運算符checked運算符與unchecked運算符在進行整數(shù)算術運算(如+、-、×、/等)或從一種整型顯式轉換到另一種整型時,有可能發(fā)生溢出。checked運算符用于進行溢出檢查,有溢出時會引發(fā)異常。而被unchecked運算符包括的代碼即使有溢出,也不會引發(fā)異常,只是返回值被截掉不符合目標類型的高位。4.5其他運算符checked運算符與unchecked4.5其他運算符VisualStudio2008編譯器默認設置為不檢查運算溢出,因此程序中即使有溢出,也不會引發(fā)異常,返回值也只是被截掉不符合目標類型的高位。如果需要開啟檢查運算溢出,則需要在VisualStudio2008開發(fā)環(huán)境中設置此編譯器選項,設置步驟如下。(1)打開項目的【屬性】窗口。(2)單擊左側的【生成】選項。(3)單擊【高級】按鈕。(4)勾選【檢查算法上溢/下溢】復選框,使用checked運算符,將強制編譯器檢查被checked標記包括的代碼塊中是否有運算溢出。使用unchecked關運算符,強制編譯器不檢查這幾行代碼是否有運算溢出。4.5其他運算符VisualStudio2008編譯4.5其他運算符check運算符示例及運行結果:byteb=255;checked{b++;}Console.WriteLine(b.ToString());4.5其他運算符check運算符示例及運行結果:4.5其他運算符sizeof運算符sizeof運算符用于確定值類型的長度,單位為字節(jié)。注意,sizeof運算符僅適用于值類型,而不適用于引用類型。示例:

Console.WriteLine(sizeof(int));運行結果顯示數(shù)字4,因為int有4個字節(jié)4.5其他運算符sizeof運算符4.5其他運算符typeof運算符typeof運算符用于返回一個表示特定類型的System.Type對象,例如typeof(int)返回System.Int32對象。示例及運行結果:staticvoidMain(string[]args){inta=8;stringz;z="加油哦!";stringc=a+z;Console.WriteLine("輸出a的類型{0}",typeof(int));Console.WriteLine("輸出c的類型{0}",c.GetType());Console.Read();}4.5其他運算符typeof運算符4.5其他運算符new運算符new運算符用于創(chuàng)建新的類型實例,可以創(chuàng)建類類型、值類型、數(shù)組類型和委托類型。示例:

Classzhanghua=newPerson();intmyint=newint();string[]array=newstring[4];4.5其他運算符new運算符4.6標點符號標點符號是某些運算符的重要組成部分,能夠為代碼編寫帶來很多的方便。例如,三目運算符,就是由兩個標點符號“?”和“:”組成的運算符。常見的標點符號——點符號(.),點符號(.)在訪問類成員、訪問枚舉成員以及在正則表達式中都會用到。4.6標點符號標點符號是某些運算符的重要組成部分,能夠為使用點符號classProgram{classStudent{stringsno;stringsname;publicStudent(stringno,stringname){sno=no;sname=name;}publicvoiddisplay(){Console.WriteLine("學生的學號是{0}",sno);Console.WriteLine("學生的姓名是{0}",sname);}}staticvoidMain(string[]args){Studenta1=newStudent("01","xiaoming");a1.display();Console.Read();}}使用點符號classProgram4.7運算符優(yōu)先級當表達式中包含多個運算符時,哪個運算符先參加運算是由運算符的優(yōu)先級來決定的,高優(yōu)先級的運算符會先參加運算。4.7運算符優(yōu)先級當表達式中包含多個運算符時,哪個運算符優(yōu)先級類別運算符

高低基本.、()、[]、x++、x--、new、typeof、checked、unchecked一元+、-、!、~、++x、--x、(T)x乘除*、/、%加減+、-移位<<、>>關系和類型測試<、>、<=、>=、is、as相等==、!=邏輯與&異或^或|條件與&&或||條件?:賦值=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=優(yōu)先級類別運算符

基本.、()、[]、x++、x--、ne當表達式中出現(xiàn)兩個具有相同優(yōu)先級的運算符時,將根據(jù)結合性計算它們—>表示從左向右,<—表示從右向左運算符結合性類型()—>圓括號++、--<—一元后綴++、--、+、-、(type)<—一元前綴*、/、%—>乘法+、-—>加法<、<=、>、>=—>關系==、!==—>相等?:—>條件=、+=、-=、*=、/=、%=<—賦值&—>邏輯和^—>邏輯異或|—>邏輯或&&—>條件和||—>條件或當表達式中出現(xiàn)兩個具有相同優(yōu)先級的運算符時,將根據(jù)結合性計算4.7運算符優(yōu)先級運算符優(yōu)先級示例及運行結果:staticvoidMain(string[]args){inta=1,b=2,c=3;boolf=true;boolm;m=a+++b+c>>2==1&&f;Console.WriteLine("{0}",m);Console.WriteLine("{0}",a);Console.Read();}4.7運算符優(yōu)先級運算符優(yōu)先級示例及運行結果:4.7運算符優(yōu)先級運算符結合性示例及運行結果:staticvoidMain(string[]args){inta;intb=2;Console.WriteLine("{0}",a=b*=3);Console.WriteLine("輸出b的值為{0}",b);Console.Read();}4.7運算符優(yōu)先級運算符結合性示例及運行結果:4.8正則表達式正則表達式就是用某種規(guī)則去匹配指定字符串的一種表示方式,它由普通字符和元字符組成。普通字符指我們平常使用的字符,如字母、數(shù)字、漢字等;元字符指可以匹配某些字符形式的具有特殊含義的字符,其作用類似于DOS命令使用的通配符。4.8正則表達式正則表達式就是用某種規(guī)則去匹配指定字符串基本書寫符號符號含義示例解釋匹配輸入\轉義符\*符號“*”*[]可接收的字符列表[abcd]a、b、c、d中任意一個字符a、b、c、d[^]不接收的字符列表[^abcd]除a、b、c、d之外的任意1個字符,包括數(shù)字和特殊字符d、e、f、1|匹配“|”之前或之后的表達式ab|cdab或cdab、cd()將子表達式分組(abc)將字符串a(chǎn)bc作為一組abc-連字符a-z任意單個小寫字母小寫字母基本書寫符號符號含義示例解釋匹配輸入\轉義符\*符號“*”*限定符符號含義示例解釋匹配輸入不匹配輸入*指定字符重復0次或n次(abc)*僅包含任意個abc的字符串a(chǎn)bc、abcabcabca、bca+指定字符重復1次或n次m+(abc)*以至少1個m開頭,后接任意個abc的字符串m、mabc、mabcabcma、abc?指定字符重復0次或1次m+abc?以至少1個m開頭,后接ab或abc的字符串mab、mabcmmmab、mmabcab、abc、mabcc^指定起始字符^[0-9]+[a-z]*以至少1個數(shù)字開頭,后接任意個小寫字母的字符串123、6aa、555edfabc、aaa、a33限定符符號含義示例解釋匹配輸入不匹配輸入*指定字符重復0次限定符(續(xù))$指定結束字符^[0-9]\-[a-z]+$以1個數(shù)字開頭,后接連字符“-”,并以至少1個小寫字母結尾的字符串2-a、3-ddd、5-efg33a、8-、7-ab{n}只能輸入n個字符[abcd]{3}由abcd中字母組成的任意長度為3的字符串a(chǎn)bc、dbc、adca、aa、dcbd{n,}至少輸入n個字符[abcd]{3,}由abcd中字母組成的任意長度不小于為3的字符串a(chǎn)ab、dbc、aaabdca、cd、bb{n,m}輸入至少n個,至多m個字符的字符串[abcd]{3,5}由abcd中字母組成的任意長度不小于為3,不大于5的字符串a(chǎn)bc、abcd、aaaaa、bcdabab、ababab、a限定符(續(xù))$指定結束字符^[0-9]\-[a-z]+$以1匹配字符集符號含義示例解釋匹配輸入不匹配輸入.匹配除換行(\n)之外的任何單個字符a..b以a開頭,b結尾,中間包括兩個任意字符,長度為4的字串a(chǎn)aab、aefb、a35b、a#*bab、aaaa、a347b\d匹配單個數(shù)字字符相當于[0-9]\d{3}(\d)?包含3個或4個數(shù)字的字符串123、987612、01023\D匹配單個非數(shù)字字符相當于[^0-9]\D(\d)*以單個非數(shù)字字符開頭,后接任意個數(shù)字字符串a(chǎn)、A342aa、AA78、1234\w匹配單個數(shù)字、大小寫字母字符,相當于[0-9a-zA-Z]\d{3}\w{4}以3個數(shù)字字符開頭的長度為7的數(shù)字字母字符串234abcd、12345Pe58a、Ra46\W匹配單個非數(shù)字、大小寫字母字符,相當于[^0-9a-zA-Z]\W+\d{2}以至少1個非數(shù)字字母字符開頭,兩個數(shù)字字符結尾的字符串#29、#?@1023、#?@100匹配字符集符號含義示例解釋匹配輸入不匹配輸入.匹配除換行(正則表達式書寫舉例至少一個字符:.{0,}。3個“.”句點符號:\.{3}。括號括起來的2~3個數(shù)字構成的字符串:\([0-9]{2,3}\),其中反斜杠(\)表示轉義。國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7}),其中一種是三位區(qū)號,8位本地號(,另一種是4位區(qū)號,7位本地號(,且區(qū)號可有可無。至少3個漢字:[\u4e00-\u9fa5]{3,},其中\(zhòng)u4e00-\u9fa5是UTF8編碼中漢字的范圍。必須包含“cd”的字符串:.{0,}cd.{0,}。正則表達式書寫舉例至少一個字符:.{0,}。4.9小結通過本章的學習,對基本的運算符與表達式有了一定的認識,對于后續(xù)的編程學習將非常有用。4.9小結通過本章的學習,對基本的運算符與表達式有了一定第4章運算符與表達式4.1引言4.2單目運算符4.3雙目運算符4.4三目運算符4.5其他運算符4.6標點符號4.7運算符優(yōu)先級4.8正則表達式4.9小結第4章運算符與表達式4.1引言4.1引言C#提供了多種數(shù)據(jù)類型,以滿足各種數(shù)據(jù)存儲的需要,同時也提供了多種運算符來滿足處理、計算數(shù)據(jù)的需要。根據(jù)處理操作對象的個數(shù)不同,運算符大致分為三類。單目運算符,又稱一元運算符;雙目運算符,又稱二元運算符;三目運算符,又稱三元運算符。大部分運算符都是雙目運算符,只有幾個單目運算符和一個三目運算符,另外還包括幾個其他運算符,下面分別介紹這些運算符。4.1引言C#提供了多種數(shù)據(jù)類型,以滿足各種數(shù)據(jù)存儲的需要4.2單目運算符常見的單目運算符有+(一元加)-(一元減)!(邏輯非)~(按位求補)++(一元遞增)--(一元遞減)type(強制類型轉換運算符)一元加和一元減運算符對所有數(shù)值類型均適用;邏輯非運算符只對布爾類型適用;按位求補運算符適用于int、uint、long和ulong類型;遞增和遞減運算符適用于數(shù)值類型和枚舉類型。注意,為了提高程序代碼的可讀性,單目運算符應該緊挨著它們的操作數(shù),不能添加任何干擾性的空字符。4.2單目運算符常見的單目運算符有一元加和一元減運算符一元加和一元減運算符用于改變一個數(shù)值變量的正負號。注意,一元加運算符不會對操作對象進行任何改變。示例:decimalbalance=100;Console.WriteLine("輸出初始balance的值:{0}",balance);balance=-balance;Console.WriteLine("輸出改變后的值balance的值:{0}",balance);balance=+balance;Console.WriteLine("輸出改變后的值balance的值:{0}",balance);Console.Read();執(zhí)行上述代碼,結果為100,-100,-100。一元加和一元減運算符一元加和一元減運算符用于改變一個數(shù)值變一元加和一元減運算符上述代碼中,需要特別說明的是WriteLine()函數(shù),該函數(shù)最常用的使用方法如下。Console.WriteLine("HelloWorld!")或Console.WriteLine(x),直接輸出括號內字符串常量或某變量的值。Console.WriteLine("x={0}",x),輸出字符串,且該字符串中包含某變量。其中,{x}為占位符,輸出時它會被變量x的值代替。一元加和一元減運算符上述代碼中,需要特別說明的是WriteL邏輯非運算符邏輯非運算符(!)主要用于對操作對象進行取反操作,操作對象只能是bool類型的變量。示例及運行結果:

boola=false;Console.WriteLine("輸出!a的值為{0}",!a);邏輯非運算符邏輯非運算符(!)主要用于對操作對象進行取反操作按位求補運算符按位求補運算符(~)用于對操作數(shù)執(zhí)行按位求補運算,其效果相當于對每一位執(zhí)行反轉,按位求補運算符是為int、uint、long和ulong類型預定義的。示例及運行結果:

staticvoidMain(string[]args){inta=2;intb=~a;Console.WriteLine(Convert.ToString(a,2));Console.WriteLine(Convert.ToString(b,2));Console.Read();}按位求補運算符按位求補運算符(~)用于對操作數(shù)執(zhí)行按位求補運一元遞增運算符和一元遞減運算符一元遞增運算符(++),它可以用表達式a++或++a實現(xiàn)變量a的值增1,而不必使用表達式a=a+1和a+=1。注意:此類運算符放在變量的前面稱為前置運算符,如++a;放在變量后面稱為后置運算符,如a++。前置運算符與后置運算符有所區(qū)別,前置運算符先改變變量的值,然后再改變表達式的值;而后置運算符先改變表達式的值,然后再改變變量的值,例如:

j=i++;//相當于j=i;i=i+1;j=++i;//相當于i=i+1;j=i;一元遞增運算符和一元遞減運算符一元遞增運算符(++),它可一元遞增運算符和一元遞減運算符注意,如果試圖對表達式而不是變量參數(shù)使用遞增或者遞減運算符,將會導致語法錯誤。其中變量參數(shù)是指能夠出現(xiàn)在賦值運算符左邊的變量或表達式。例如,++(x+1)就是一個語法錯誤,因為x+1不是變量參數(shù)。一元遞增運算符和一元遞減運算符注意,如果試圖對表達式而不是變強制類型轉換運算符強制類型轉換運算符(type)在第3章有過介紹,作用是顯式轉換變量類型。示例:

inta,b;doublej;a=2;j=a;Console.WriteLine("輸出j的值為{0}",j);b=j;//編譯錯誤。需要使用強制類型轉換符,應修改為b=(int)j。

強制類型轉換運算符強制類型轉換運算符(type)在第3章有過4.3雙目運算符常見的雙目運算符包括:算術運算符位運算符關系運算符類型測試運算符邏輯運算符條件邏輯運算符條件運算符賦值運算符其他運算符4.3雙目運算符常見的雙目運算符包括:4.3.1算術運算符與算術表達式算術運算符有+(加)、-(減)、*(乘)、/(除)和%(取余),與數(shù)學運算符的用法類似,它們的優(yōu)先級關系與數(shù)學運算也是一致的,即先乘除,后加減,同級運算之間按從左至右的順序進行運算。C#.NET中的“+”運算符有兩種用法,一種用于計算兩個操作數(shù)或表達式的和,另一種可作為連接字符串的連接符例如:1000+“++”+1100,結果生成一個新的字符串“1000++1100”。4.3.1算術運算符與算術表達式算術運算符有+(加)、-使用算術運算符staticvoidMain(string[]args){inta=8;intb=2;stringmyname="nihao!";intc=3;doublef=1.2;Console.WriteLine("輸出a+b的值為{0}",a+b);Console.WriteLine("輸出a-b的值為{0}",a-b);Console.WriteLine("輸出a+myname的值為{0}",a+myname);Console.WriteLine("輸出a*b的值為{0}",a*b);Console.WriteLine("輸出a/b的值為{0}",a/b);Console.WriteLine("輸出a/c的值為{0}",a/c);Console.WriteLine("輸出a/f的值為{0}",a/f);Console.WriteLine("輸出a%c的值為{0}",a%c);Console.Read();}注意:a/f,由于操作數(shù)不是同一個級別上的,系統(tǒng)為了不丟失精度,先將低精度操作數(shù)隱式轉換為高精度操作數(shù)。這里將整型a隱式轉換為雙精度double型,然后再運算,因此運算結果為6.666666666666667,是雙精度型,而非整型。使用算術運算符staticvoidMain(string取余運算符的詳細用法注意:C#中取余運算操作數(shù)的類型為數(shù)值類型,例如浮點型和字符型,而其他語言中取余運算符的操作數(shù)只能為整數(shù)。示例及運行結果:

staticvoidMain(string[]args){inta=8,j=3,b=-3,c=-8;doubled=8.1;Console.WriteLine("輸出a%j的值為{0}",a%j);Console.WriteLine("輸出a%b的值為{0}",a%b);Console.WriteLine("輸出c%j的值為{0}",c%j);Console.WriteLine("輸出d%j的值為{0}",d%j);Console.Read();}取余運算符的詳細用法注意:C#中取余運算操作數(shù)的類型為數(shù)值4.3.2位運算符與位表達式位運算符用于對操作數(shù)的位進行運算,常用二元位運算符如右表。

運算符類別操作&二元與|二元或^二元異或<<二元左移>>二元右移4.3.2位運算符與位表達式位運算符用于對操作數(shù)的位進行按位與此運算符的作用是將兩個操作數(shù)對應的每一個位分別進行邏輯與操作,具體規(guī)則為:與1相與,結果不變;與0相與,結果為0。例如,計算3&5,運算過程如下。 3: 00000011 5:(&) 00000101 3&5: 00000001運算結果為1。使用按位與操作可以將操作數(shù)的若干位置0,其他位不變。按位與此運算符的作用是將兩個操作數(shù)對應的每一個位分別進行邏輯按位或此運算符的作用是將兩個操作數(shù)對應的每一位分別進行邏輯或操作,具體規(guī)則為:與1相或,結果為1;與0相或,結果不變。例如,計算3|5,運算過程如下。3: 00000011 5:(|) 00000101 3|5: 00000111運算結果為7。使用按位或操作可以將操作數(shù)中的若干位置1,其他位不變。按位或此運算符的作用是將兩個操作數(shù)對應的每一位分別進行邏輯或按位異或此運算符的作用是將兩個操作數(shù)對應的每一位進行異或,具體規(guī)則為:若對應位相同,則該位的運算結果為0;若對應位不同,則該位的運算結果為1。例如,計算3^5,運算過程如下。 3: 00000011 5:(^) 00000101 3^5: 00000110使用按位異或操作可以將操作數(shù)中的若干指定位的值翻轉。如果使某位與0異或,結果是該位的原值;如果使某位與1異或,則結果與該位原來的值相反。按位異或此運算符的作用是將兩個操作數(shù)對應的每一位進行異或,具移位運算符移位運算符有<<(左移運算符)、>>(右移運算符)兩個。左移是按照指定的位數(shù)將一個數(shù)的二進制值向左移位。左移后,低位補0,移出的高位舍棄。右移是按照指定的位數(shù)將一個數(shù)的二進制值向右移位。右移后,移出的低位舍棄。注意:若右移運算符的操作數(shù)是int或long型,最高位為符號位;若該操作數(shù)是非負數(shù),則最高位設為0;若操作數(shù)為負數(shù),則最高位設為1。若右移運算符的操作數(shù)為uint或者ulong型,沒有符號位,則操作數(shù)各位依次右移,高位設為0。移位運算符移位運算符有<<(左移運算符)、>>(右移運算符)移位運算符移位運算符示例:staticvoidMain(string[]args){inta=2,b=-8;intc,d;Console.WriteLine("輸出a的值為{0}",a);c=a<<2;d=a>>2;Console.WriteLine("輸出a左移兩位后的值為{0}",c);Console.WriteLine("輸出a右移兩位后的值為{0}",d);Console.WriteLine("輸出b右移兩位后的值為{0}",b>>2);Console.WriteLine("輸出a的值為{0}",a);Console.Read();}移位運算符移位運算符示例:4.3.3關系運算符與關系表達式在解決許多問題時都需要進行情況判斷,對復雜的條件進行邏輯分析。C#中也提供了用于比較、判斷的關系運算符和用于邏輯分析的邏輯運算符。關系運算符是比較簡單的一種邏輯運算。通過關系運算符將兩個操作數(shù)連接起來,即為關系表達式。關系表達式的結果為bool類型,值只能為true或false。關系運算符包括==、!=、<、>、<=和>=。其中,<、>、<=、和>=運算符適用于整數(shù)類型、浮點類型和decimal類型;==和!=運算符適用于整數(shù)類型、浮點類型、decimal類型、布爾類型、枚舉類型、引用類型、字符串類型和委托類型。4.3.3關系運算符與關系表達式在解決許多問題時都需要常用關系運算符C#中的符號標準數(shù)學中的符號C#中的條件范例C#中的條件含義===x==yx等于y!=≠x!=yx不等于y>>x>yx大于y<<x<yx小于y>=≥x>=yx大于等于y常用關系運算符C#中的符號標準數(shù)學中的符號C#中的條件范例C使用關系運算符

classProgram{enumRange:long{max=214L,min=123L};staticvoidMain(string[]args){boolx=false,y=true;Console.WriteLine("{0}",x==y);Rangea=Range.max,b=Range.min;Console.WriteLine("{0}",a==b);stringm="testequal";stringn=m;Console.WriteLine("{0}",m==n);Console.Read();}}使用關系運算符classProgram4.3.4類型測試運算符與類型測試表達式類型測試運算符主要用于更安全地進行強制類型轉換,包括is運算符和as運算符。is運算符用于查看未知變量是否為給定類型的變量,或者是否為給定類型派生出來的類型的變量。如果是,則返回true。is運算符的語法形式如下:<obj>is<type>4.3.4類型測試運算符與類型測試表達式類型測試運算符4.3.4類型測試運算符與類型測試表達式is運算符示例及運行結果:staticvoidMain(string[]args){stringa="yes";intb=0;if(aisstring)Console.WriteLine("Itisastring");elseConsole.WriteLine("Itisnotastring");if(bisstring)Console.WriteLine("Itisastring");elseConsole.WriteLine("Itisnotastring");Console.Read();}

4.3.4類型測試運算符與類型測試表達式is運算符示例及運行4.3.4類型測試運算符與類型測試表達式as運算符用于將一個值顯式地轉換(使用引用轉換或裝箱轉換)為一個給定的引用類型。如果要轉換的類型與指定的類型兼容,轉換就會成功執(zhí)行;如果類型不兼容,as運算符就會返回null。這里的兼容是指對象是該類型或派生于該類型。注意as運算符必須與引用類型一起使用,int等值類型不能使用。as運算符的語法形式如下:<obj>as<type>4.3.4類型測試運算符與類型測試表達式as運算符用于將一個4.3.4類型測試運算符與類型測試表達式as運算符示例及運行結果:staticvoidMain(string[]args){objecta1="nihao";objecta2=12;strings1=a1asstring;strings2=a2asstring;Console.WriteLine("輸出s1的值{0}",s1);Console.WriteLine("輸出s2的值{0}",s2);Console.Read();}4.3.4類型測試運算符與類型測試表達式as運算符示例及運4.3.5邏輯運算符與邏輯表達式只有簡單的關系比較是遠不能滿足實際編程需要的,還需要使用邏輯運算符將簡單的關系表達式連接起來,構成比較復雜的邏輯表達式。為了在判斷過程中測試多個條件,C#語言提供了一些邏輯運算符和條件邏輯運算符,可以利用它們組合成復雜的條件。注意,邏輯運算符的操作對象必須是bool類型,且邏輯運算符會計算所有的操作數(shù)。4.3.5邏輯運算符與邏輯表達式只有簡單的關系比較是遠常用邏輯運算符運算符類別范例結果!一元var1=!var2將var2取反后賦給var`1&二元var1=var2&var3將var2和var3取與后賦給var1|二元var1=var2|var3將var2和var3取或后賦給var1^二元var1=var2^var3將var2和var3取異或后賦給var1常用邏輯運算符運算符類別范例結果!一元var1=!var24.3.5邏輯運算符與邏輯表達式邏輯與運算符示例及運行結果:

staticvoidMain(string[]args){intgender=1,age=65;if(gender==1&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.5邏輯運算符與邏輯表達式邏輯與運算符示例及運行結4.3.5邏輯運算符與邏輯表達式邏輯或運算符示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1|(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1|(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.5邏輯運算符與邏輯表達式邏輯或運算符示例及運行結4.3.6條件邏輯運算符與條件邏輯表達式條件與(&&)和條件或(||)運算符稱為條件邏輯運算符。包含條件邏輯運算符的表達式稱為條件邏輯表達式。運算符類別范例結果&&二元var1=var2&&var3將var2和var3相與后賦給var1,僅當var2為true時,才計算var3||二元var1=var2||var3將var2和var3相或后賦給var1,僅當var2為false時,才計算var34.3.6條件邏輯運算符與條件邏輯表達式條件與(&&)4.3.6條件邏輯運算符與條件邏輯達式條件邏輯運算符&&示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1&&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1&&(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.6條件邏輯運算符與條件邏輯達式條件邏輯運算符&&4.3.6條件邏輯運算符與條件邏輯表達式條件邏輯運算符||示例及運行結果:staticvoidMain(string[]args){intgender=1,age=65;if(gender==1||(++age>=65))Console.WriteLine("輸出age的值為{0}",age);if(gender!=1||(++age>=65))Console.WriteLine("輸出age的值為{0}",age);Console.WriteLine("輸出age的值為{0}",age);Console.Read();}4.3.6條件邏輯運算符與條件邏輯表達式條件邏輯運算符|4.3.7賦值運算符與賦值表達式賦值運算符(=)用于為變量、屬性、事件或索引器元素賦值。除了直接賦值以外,C#語言還提供了用于簡化賦值表達式的快捷賦值運算符。例如,語句c=c+3可以簡化為c+=3。運算符含義運算符含義+=加法&=位與-=減法|=位或*=乘法^=位異或/=除法~=位非++x前加<<=左移--x前減>>=右移x++后加x--后減4.3.7賦值運算符與賦值表達式賦值運算符(=)用于為4.4三目運算符三目運算符就是包含3個操作數(shù)的運算符。條件運算符是唯一的三元運算符,它由“?”和“:”兩個標點符號組成,它的3個對象均是表達式。語法形式如下:<condition>?<expression1>:<expression2>先計算條件condition,如果計算結果為true,則計算expression1的值,且整個表達式的值是expression1的值;如果計算結果為false,則計算expression2的值,且整個表達式的值是expression2的值。注意,條件計算的結果必須為bool型,否則會出錯。4.4三目運算符三目運算符就是包含3個操作數(shù)的運算符。條4.4三目運算符三目運算符示例及運行結果:

inta=1;strings=a.ToString()+"";s+=(a==1?"man":"men");Console.WriteLine(s);Console.Read();4.4三目運算符三目運算符示例及運行結果:4.5其他運算符checked運算符與unchecked運算符在進行整數(shù)算術運算(如+、-、×、/等)或從一種整型顯式轉換到另一種整型時,有可能發(fā)生溢出。checked運算符用于進行溢出檢查,有溢出時會引發(fā)異常。而被unchecked運算符包括的代碼即使有溢出,也不會引發(fā)異常,只是返回值被截掉不符合目標類型的高位。4.5其他運算符checked運算符與unchecked4.5其他運算符VisualStudio2008編譯器默認設置為不檢查運算溢出,因此程序中即使有溢出,也不會引發(fā)異常,返回值也只是被截掉不符合目標類型的高位。如果需要開啟檢查運算溢出,則需要在VisualStudio2008開發(fā)環(huán)境中設置此編譯器選項,設置步驟如下。(1)打開項目的【屬性】窗口。(2)單擊左側的【生成】選項。(3)單擊【高級】按鈕。(4)勾選【檢查算法上溢/下溢】復選框,使用checked運算符,將強制編譯器檢查被checked標記包括的代碼塊中是否有運算溢出。使用unchecked關運算符,強制編譯器不檢查這幾行代碼是否有運算溢出。4.5其他運算符VisualStudio2008編譯4.5其他運算符check運算符示例及運行結果:byteb=255;checked{b++;}Console.WriteLine(b.ToString());4.5其他運算符check運算符示例及運行結果:4.5其他運算符sizeof運算符sizeof運算符用于確定值類型的長度,單位為字節(jié)。注意,sizeof運算符僅適用于值類型,而不適用于引用類型。示例:

Console.WriteLine(sizeof(int));運行結果顯示數(shù)字4,因為int有4個字節(jié)4.5其他運算符sizeof運算符4.5其他運算符typeof運算符typeof運算符用于返回一個表示特定類型的System.Type對象,例如typeof(int)返回System.Int32對象。示例及運行結果:staticvoidMain(string[]args){inta=8;stringz;z="加油哦!";stringc=a+z;Console.WriteLine("輸出a的類型{0}",typeof(int));Console.WriteLine("輸出c的類型{0}",c.GetType());Console.Read();}4.5其他運算符typeof運算符4.5其他運算符new運算符new運算符用于創(chuàng)建新的類型實例,可以創(chuàng)建類類型、值類型、數(shù)組類型和委托類型。示例:

Classzhanghua=newPerson();intmyint=newint();string[]array=newstring[4];4.5其他運算符new運算符4.6標點符號標點符號是某些運算符的重要組成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論