第二章變量、運算符和表達(dá)式_第1頁
第二章變量、運算符和表達(dá)式_第2頁
第二章變量、運算符和表達(dá)式_第3頁
第二章變量、運算符和表達(dá)式_第4頁
第二章變量、運算符和表達(dá)式_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

變量、運算符和表達(dá)式

上海師范大學(xué)主講:於家變量變量有多種類型,比如自然數(shù)、整數(shù)、有理數(shù)、實數(shù)等。C#中如何定義各種類型的變量?變量如何運算?整型變量StaticvoidMain(string[]args){inta;//聲明變量aa=7;//為變量a賦值intb;//聲明變量bb=2;//為變量b賦值intadd;//聲明變量addadd=a+b;//求變量a、b的和//輸出結(jié)果Console.WriteLine(“{0}+{1}={2}”,a,b,add);}聲明整型變量int

a;該語句被執(zhí)行時,系統(tǒng)會在內(nèi)存中分配一塊4字節(jié)的空間,用來存儲變量a的值。整型變量的默認(rèn)值為0。變量類型變量名稱賦值語句a=7;把變量a的值設(shè)置為7(原先未賦值時默認(rèn)為0)。*賦值運算符“=”不是“相等”的意思。并非是比較左右兩邊是否相等。賦值語句add=a+b;把a+b的值賦給add729內(nèi)存addba輸出Console.WriteLine(“{0}+{1}={2}”,a,b,add);{0},{1}和{2}是三個占位符,表示該處插入變量值,{0}處插入第一個變量a的值,{1}處插入第二個變量b的值,{2}處插入第三個變量add的值。賦值語句n=n+100;將n的增加100,然后重新賦值給nintn;n=100;n=200;n=n+100;Console.WriteLine(“n={0}”,n);整型變量的類型int型short型long型無符號型Int型變量的取值范圍Int型變量占用4個字節(jié)的空間,共32位。為了表示負(fù)數(shù),把最高位定義為符號位,0表示正數(shù),1表示負(fù)數(shù),后面的31位表示數(shù)值的大小。Int型的取值范圍是-231~231-1,即-2147483648~2147483647short型某些情況下使用int型太浪費short型變量占用2個字節(jié),最高位表示正負(fù)號,后面的15位表示數(shù)值大小,取值是-215~215-1,即-32768~32767。long型某些情況下int型變量取值范圍不夠用long型占用8個字節(jié),最高位表示正負(fù)號,后面的63位表示數(shù)值大小,范圍可達(dá)到-263~263-1,即-9223372036854775808~9223372036854775807。無符號型在計數(shù)、年齡統(tǒng)計等情況下,不需要負(fù)數(shù)使用uint型變量(u是unsigned的縮寫,無符號的),32位全部用來表示正整數(shù),范圍是0~232-1。相應(yīng)的,有ushort和ulong型變量。溢出shorta;a=32768;實數(shù)型變量實數(shù)型也稱為浮點型類型字節(jié)數(shù)取值范圍有效數(shù)字備注float4±1.5×10-45~3.4×10387位單精度實數(shù)double8±5.0×10-324~1.7×1030815/16位雙精度實數(shù)decimal16±1.0×10-28~7.9×102828位金融貨幣從上表可以看出,decimal的有效位數(shù)很大,達(dá)到了28位,但是表示的數(shù)據(jù)范圍卻比float和double類型小。decimal類型并不是C#中的基礎(chǔ)類型,所以使用的時候會對計算時的性能有影響。Decimal數(shù)據(jù)類型可以在VisualStudio編輯器中使用,只要在一個浮點類型的值后加一個大寫或小寫的M,則編輯器會認(rèn)為這個浮點類型的值是一個Decimal類型。這種128位高精度十進(jìn)制數(shù)表示法通常用在財務(wù)計算中。要注意的是,在.NET環(huán)境中,計算該類型的值會有性能上的損失,因為它不是基本類型。

decimal[(p[,s])]andnumeric[(p[,s])]固定有效位數(shù)和小數(shù)位數(shù)的數(shù)字。當(dāng)使用最大有效位數(shù)時,有效值是從-10^38+1到10^38-1。decimal的SQL-92同義字是dec和dec(p,s)。numeric的功能相當(dāng)於decimal。p(有效位數(shù))可儲存的最大十進(jìn)位數(shù)總數(shù),小數(shù)點左右兩側(cè)都包括在內(nèi)。有效位數(shù)必須是1至最大有效位數(shù)38之間的值。預(yù)設(shè)有效位數(shù)是18。s(小數(shù)位數(shù))小數(shù)點右側(cè)所能儲存的最大十進(jìn)位數(shù)。小數(shù)位數(shù)必須是從0到p的值。只有在指定了有效位數(shù)時,才能指定小數(shù)位數(shù)。預(yù)設(shè)小數(shù)位數(shù)是0;因此,0<=s<=p。最大儲存體大小會隨著有效位數(shù)而不同。例:decimal(2,1),有效長度為2,小數(shù)位占1位。此時,插入數(shù)據(jù)“12.3”、“12”等會出現(xiàn)“數(shù)據(jù)溢出錯誤”的異常;插入“1.23”或“1.2345...”會自動四舍五入成“1.2”;插入“2”會自動補成“2.0”,以確保2位的有效長度,其中包含1位小數(shù)。實數(shù)常量實數(shù)常量在默認(rèn)情況下是雙精度的。要把實數(shù)常量賦值給單精度常量,需要添加后綴:小寫的f或者大寫的F。如:125.36f、3.1415926F相當(dāng)于類型轉(zhuǎn)換程序示例floatx=3.14159265358979f;doubley=3.14159265358979;Console.WriteLine("x={0}",x);Console.WriteLine("y={0}",y);

單精度有效位數(shù)是7位,有效數(shù)字被四舍五入了。字符字符包括英文字母、中文漢字、各類特殊字符、數(shù)字符號等等。C#中用單引號標(biāo)記字符比如’f’,’#’,’8’等其中’8’只是用來顯示8這個符號,不是一個可以用于計算的數(shù)字。字符變量和字符串變量聲明字符變量charc;c=‘f’;字符串變量strings;s="fine";字符串的輸出與讀取輸出字符串,并換行Console.WriteLine("字符串");輸出字符串,不換行Console.Write("字符串");讀取字符串Console.ReadLine("字符串");示例程序Console.WriteLine(“Pleaseinputyourname”);Stringname=Console.ReadLine();Console.WriteLine(“Yournameis”+name);把讀取的字符串賦值給變量name,然后輸出。讀取字符Intch=Console.Read();從輸入窗口讀取一個字符,返回字符的ASCII編碼。如:輸入f,返回f的ASCII碼102讀取數(shù)字需要使用Convert.ToDouble()把字符串轉(zhuǎn)換為double型數(shù)字doublea=Convert.ToDouble(Console.ReadLine());ASCII編碼為了方便在計算機里使用字符,在計算機誕生之初,制定了ASCII編碼(AmericanStandardCodeforInformationInterchange),即美國信息交換標(biāo)準(zhǔn)碼。標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制數(shù)來表示128個字符,包括英文字母、希臘字母、數(shù)字、常用的字符和各種控制符。后來ASCII碼擴展至256個字符。標(biāo)準(zhǔn)ASCII碼表(部分)ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符

0NUT32(space)64@96、1SOH33!65A97a2STX34”66B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS40(72H104h9HT41)73I105i10LF42*74J106j11VT43+75K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE48080P112pASCII編碼ASCII表上的0~31分配給了控制字符,用于控制外圍設(shè)備,比如打印機;32~126分配給可打印字符,127分配給DELETE命令。Unicode編碼ASCII碼可以表示256個字符,對西方的字母語言編碼已經(jīng)足夠了。但是對于中國的漢字,卻遠(yuǎn)遠(yuǎn)不夠。為解決漢字的編碼問題,1981年中國制定了GB2312編碼標(biāo)準(zhǔn),用兩個字節(jié)表示一個漢字,可以存儲6萬多個字符。日文、韓文、繁體中文等文字都使用類似的方法來構(gòu)建本地字符集編碼。這些字符集都使用多個字節(jié)來表示一個字符,因此這些編碼稱為多字節(jié)字符集(Charset)。Unicode編碼多字節(jié)字符集由于各個國家和地區(qū)之間定義的字符集編碼標(biāo)準(zhǔn)不同,會產(chǎn)生不兼容的問題。比如用GB2312編碼的軟件,在繁體中文的環(huán)境下就會出現(xiàn)亂碼。Unicode編碼:世界通用的編碼。為全世界每個字符提供統(tǒng)一的編碼,同一個字符,不論在什么平臺、什么軟件上、什么語言環(huán)境中,都有相同的編碼。轉(zhuǎn)義字符Console.WriteLine(“Whereareyoufrom?\nIamfromShanghai.”);\n在這里起換行的作用。像這樣控制文本格式的特殊字符稱為轉(zhuǎn)義字符。轉(zhuǎn)義字符轉(zhuǎn)義字符功能Unicode編碼\’單引號0027\”雙引號0022\\反斜杠005C\0空0000\a警告0007\b退格0008\f換頁000C\r回車000D轉(zhuǎn)義字符Console.WriteLine(“C:\STUDY\2010”);由于雙引號用來標(biāo)記字符串,反斜杠“\”用來標(biāo)記轉(zhuǎn)義字符,所以在輸出的時候要用轉(zhuǎn)義字符。Console.WriteLine(“C:\\STUDY\\2010”);@控制符前綴@可以使引號里的內(nèi)容原樣輸出,而不理會里面的轉(zhuǎn)義字符。

Console.WriteLine(@“Whereareyoufrom?\nIamfromShanghai.”);+運算符將兩個字符串用“+”運算符連接。stringstrSentence=“ShanghaiNormalUniversity”;strSentence=strSentence+“isafamousuniversityinShanghai.”Console.WriteLine(strSentence);變量的命名規(guī)則變量的第一個字符必須是字母、下劃線或者@;后面的字符可以使字母、數(shù)字、下劃線;變量不能和關(guān)鍵詞重名(比如int、double、float、還有以后我們要講的if、for等關(guān)鍵詞);區(qū)分大小寫(A與a是兩個變量);命名選擇有意義的名稱,更容易理解。變量的命名規(guī)則例子(哪些是錯誤的變量名)ag1floatchkListBox_Count5thRoom@shnu推薦的變量命名方式變量名稱第一個單詞全部小寫,最好用簡稱來表示變量的類型,以后在用變量的時候可以很容易的看出變量的類型。如:stringstrName;doubledblNumber;常量類型后綴示例int無10,100,-10,-100uintu或U1u,100u,2007Ulongl或L10l,100L,-888888Lulongul或UL200000000ULfloatf或F1.0f,3.14f,1.155Fdoubled或D或無1.0,3.1415926535897Ddecimalm或M1000.00m符號常量constdoublePI=3.14;為什么要使用符號常量?const常量只在聲明的時候賦值,在程序運行中不能改變其值。因此,const常量使程序易于維護,而且大大增強了程序的健壯性。如果代碼中修改了某個常量的值,編譯器會在程序編譯的時候指出該錯誤。練習(xí)A=6,B=8,請交換A與B的值。intA=6;intB=8;A=B;B=A;Console.WriteLine("A="+A);Console.WriteLine("B="+B);練習(xí)6A8B8888分析練習(xí)intA=6;intB=8;intC;//中間變量C=A;//把A的值暫存到C中A=B;//把B的值賦給AB=C;//把C的暫存的值賦給BConsole.WriteLine("A="+A);Console.WriteLine("B="+B);練習(xí)6A8B6888分析66C866作業(yè)編寫程序,輸出一個菱形?,F(xiàn)在需要定義各類變量來存儲并輸出學(xué)生信息。其中,定義字符串變量記錄學(xué)生的名字,定義字符變量記錄性別,整型變量記錄年級,浮點型變量記錄某門課程的成績。然后輸入三個學(xué)生的信息,并輸出。交換三個變量的值。A=1,B=2,C=3變?yōu)锳=2,B=3,C=1復(fù)習(xí)變量(1)整型:int,short,long,uint,ushort,ulong(2)實數(shù)型:float,double,decimal(為財務(wù)計算設(shè)計)(3)字符:char(4)字符串:string(5)布爾型:bool(值為ture或false)復(fù)習(xí)字符編碼(1)ASCII編碼(2)Unicode編碼特殊字符(1)轉(zhuǎn)義字符(2)@控制符(3)+運算符復(fù)習(xí)Console類:表示控制臺應(yīng)用程序的標(biāo)準(zhǔn)輸入流、輸出流和錯誤流。Console.Write():將指定值的文本表示形式寫入標(biāo)準(zhǔn)輸出流。Console.WriteLine():將指定的數(shù)據(jù)(后跟當(dāng)前行終止符)寫入標(biāo)準(zhǔn)輸出流。

Console.Read():從標(biāo)準(zhǔn)輸入流讀取下一個字符。(讀出的ASCii碼)Console.ReadLine():從標(biāo)準(zhǔn)輸入流讀取下一行字符。復(fù)習(xí)格式化輸出Console.WriteLine(“{0}+{1}={2}”,a,b,add);常量:const使程序易于維護,增強健壯性占位符參數(shù)列表運算符和表達(dá)式C#中有哪些運算符?這些運算符和數(shù)學(xué)中的運算有什么異同?運算符含義示例Unicode編碼+加A+BA+B-減A-BA-B*乘N*3N×3/除X/YX÷Y%取余X%5Xmod5算數(shù)運算符intx=10/3;doubley=10/3;doublez=10.0/3;Console.WriteLine("x=",x);Console.WriteLine("y=",y);Console.WriteLine("z=",z);C#代數(shù)運算doublex;doubley;Console.Write("x=");x=Convert.ToDouble(Console.ReadLine());y=x*x*x{Math.pow(x,3)}+8*x*x-18*x+26;Console.WriteLine("y="+y);Math.pow(x,3)相當(dāng)于x*x*xy=x3+8x2-18x+26數(shù)學(xué)函數(shù)功能函數(shù)示例數(shù)學(xué)表示乘方Math.Pow()Math.Pow(2,3)開方Math.Sqrt()Math.Sqrt(16)e的次方Math.Exp()Math.Exp(8)絕對值Math.Abs()Math.Abs(-3)對數(shù)Math.Log()Math.Log(8,2)常用對數(shù)Math.Log10()Math.Log10(100)正弦函數(shù)Math.Sin()Math.Sin(Math.PI/3)余弦函數(shù)Math.Cos()Math.Cos(Math.PI/3)正切函數(shù)Math.Tan()Math.Tan(Math.PI/3)自增自減運算符a++等價于a=a+1a--等價于a=a–1另外,運算符++和--還有前置與后置的區(qū)別。前置先自增再使用,后置先使用后自增。這里的“使用”指使用變量進(jìn)行賦值、運算或者輸出等操作。自增自減運算符例子intiYear=2010;intiThisYear;iThisYear=iYear++;//后置自增運算Console.WriteLine(“iYear={0},iThisYear={1}”,iYear,iThisYear);自增自減運算符intiYear=2010;intiThisYear;iThisYear=++iYear;//前置自增運算Console.WriteLine(“iYear={0},iThisYear={1}”,iYear,iThisYear);賦值運算符簡單賦值運算符inta;a=8;復(fù)合賦值運算符a+=8;等價于a=a+8;復(fù)合賦值運算符功能示例等價表達(dá)式+=a+=10a=a+10-=a-=10a=a-10*=a*=10a=a*10/=a/=10a=a/10%=a%=10a=a%10注:a*=b–c;相當(dāng)于a=a*(b–c);算數(shù)運算符的優(yōu)先級優(yōu)先級運算符說明高低1前置++,前置--2*,/,%乘,除,取余3+,-加,減4=,*=,/=,+=,-=賦值5后置++,后置--變量類型的轉(zhuǎn)換C#是強類型語言,每個變量都有嚴(yán)格的類型。如果運算符兩邊的類型不一致,運算中就要進(jìn)行類型的轉(zhuǎn)換。轉(zhuǎn)換的種類:(1)隱式轉(zhuǎn)換(2)顯式轉(zhuǎn)換(3)字符串和數(shù)值間的轉(zhuǎn)換隱式轉(zhuǎn)換shorta=12345;intn;n=a;Console.WriteLine(“a=”+a);Console.WriteLine(“n=”+n);隱式轉(zhuǎn)換輸出的結(jié)果顯示n與a的值相同賦值運算符兩邊的數(shù)據(jù)類型不同,賦值時,先把a的值12345轉(zhuǎn)為int型,然后賦值給n。因為short型變量的取值范圍是-32768~32767,int型變量的取值范圍是-2147483648~2147483647,short型取值范圍是int型的子集,所以int型變量可以容納short型數(shù)據(jù)。將short型轉(zhuǎn)換為int型不會產(chǎn)生溢出。把取值范圍較小的類型轉(zhuǎn)換為取值范圍較大的類型是安全的,是默認(rèn)進(jìn)行的,不必添加額外的代碼,因此稱為隱式轉(zhuǎn)換。顯式轉(zhuǎn)換inta=123456;shortn;n=a;Console.WriteLine(“a=”+a);Console.WriteLine(“n=”+n);顯式轉(zhuǎn)換上述的代碼存在兩個問題(1)a的值123456已經(jīng)超出了short型的取值范圍(-32768~32767)(2)必須進(jìn)行顯式轉(zhuǎn)換才能將int型變量值轉(zhuǎn)換為short型。*大于32767的int型數(shù)據(jù)顯式轉(zhuǎn)換為short型會發(fā)生截斷操作,只將int型數(shù)據(jù)的后16位賦值給short型變量,數(shù)據(jù)大小發(fā)生了變化。顯式轉(zhuǎn)換inta=12345;s

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論