




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章
數據類型、運算符與表達式上節復習:
1、C#程序結構usingSystem; //導入命名空間namespaceTest{classProgram //類{staticvoidMain(string[]args) //程序入口{ //程序實現代碼} //主函數結束} //Program類結束} //TestConsoleCS命名空間結束上節復習:
2、輸入/輸出Console.ReadLine() //讀取一行Console.Read() //讀取一個字符注意沒有任何輸入時的返回值Console.WriteLine() //輸出并換行Console.Write() //輸出不換行注意常用格式化字符的輸出內容提要:
C#的主要數據類型
常量與變量
C#常用的運算符、表達式目的要求:
掌握C#的主要數據類型掌握C#常用運算符
掌握C#常用表達式重點難點:
類型轉換、運算符的優先級
引用類型3.1數據類型類類型數組類型接口類型
委托類型簡單類型結構類型枚舉類型
值類型數據類型
引用類型整數類型浮點類型小數類型
字符類型
布爾類型3.1.1值類型1.整數類型整數類型的數據值只能是整數,計算機語言所提供的數據類型有一定的范圍。類型標識符描述可表示的數值范圍sbyte8位有符號整數-128~+127byte8位無符號整數0~255short16位有符號整數-32768~+32767ushort16位無符號整數0~65535int32位有符號整數-2147483648~+2147483647uint32位無符號整數0~232-1long64位有符號整數-9223372036854775805~+9223372036854775807ulong64位無符號整數0~264-13.1.1值類型
2.浮點類型浮點類型的數據包含兩種:單精度浮點型(float)和雙精度浮點型(double),其區別在于取值范圍和精度的不同。
float類型是32位寬,double類型是64位寬。單精度:取值范圍在+1.5×10-45~3.4×1038之間,精度為7
位數。雙精度:取值范圍為+5.0×-324~1.7×10308之間,精度為
15~16位數。3.1.1值類型3.小數類型
小數類型(decimal)占用16個字節(128位),主要為了滿足需要高精度的財務和金融計算機領域。小數類型數據的取值范圍和精度如下:取值范圍在+1.0×10-28~7.9×1028之間,精度為29位數。注意:小數類型數據的后面必須跟m或者M后綴來表示它是decimal類型的,如3.14m、0.28m等,否則就會被解釋成標準的浮點類型數據,導致數據類型不匹配。
3.1.1值類型例:138f
代表float類型的數值138.0518u代表uint類型的數值51836897123ul
代表ulong類型的數值3689712322.1m
代表decimal類型的數值22.112.68
代表double類型的數值12.6836 代表int類型的數值363.1.1值類型4.字符類型
字符類型的類型標識符是char,采用Unicode字符集。凡是在單引號中的一個字符,就是一個字符常數,如:
'你'、'A'、'?'、'6'、'2'
注意:
在表示一個字符常數時,單引號內的有效字符數量必須且只能是一個,并且不能是單引號或者反斜杠(\)。3.1.1值類型為了表示單引號和反斜杠等特殊的字符常數,C#提供了轉義符。下面是
C#常用的轉義符:轉義符字符名稱\'單引號\"雙引號\\反斜杠\0空字符(Null)\a發出一個警告
\b倒退一個字符\f換頁\n新的一行\r換行并移到同一行的最前面\t水平方向的Tab\v垂直方向的Tab3.1.1值類型如Console.WriteLine("Hello,"+"\'"+"打印出單引號"+"\'"); //Hello,'打印出單引號'例:usingSystem;classStrDemo{staticvoidMain(){Console.WriteLine("FirstLine\nSecondLine");Console.WriteLine("A\tB\tC");Console.WriteLine("D\tE\tF");}}運行結果:3.1.1值類型5.布爾類型布爾類型的類型標識符是bool。布爾類型常數只有兩種值:true(代表"真")和false(代表"假")。布爾類型數據主要應用在流程控制中。例:
boolb=5>3;//b的值為true;b=false;3.1.2引用類型1.object類
object類是系統提供的基類型,是所有類型的基類,C#中所有的類型都直接或間接派生于對象類型。對于任一個object變量,均可以賦以任何類型的值。
doubled=3.14;objectobj1;obj1=d;obj1='k';3.1.2引用類型2.string類一個字符串是被雙引號包含的一系列字符。
string類是專門用于對字符串進行操作的。如:
stringstr1="中國,";
stringstr2="你好!";
stringstr3=str1+str2;//這相當于str3="中國,你好!"
charc=str3[0];//取出str3的第一個字符,即"中"字。
stringstr5=@"hello\tworld";//hello\tworld3.1.2引用類型C#支持兩種形式的字符串常數。(1)常規字符串常數如:"thisisatest""C#程序設計教程"例:usingSystem;classStrDemo{staticvoidMain(){Console.WriteLine("First\0line\nSecond\0line");Console.WriteLine("你好\a");Console.WriteLine("1\t2\t3");Console.WriteLine("*\t**\t***");}}
運行結果如下:3.1.2引用類型例:usingSystem;classStringDemo{publicstaticvoidMain(){stringstr1="Astring";stringstr2="Anotherstring.";Console.WriteLine("{0}\n{1}",str1,str2);}}運行結果:3.1.2引用類型(2)逐字字符串常數逐字字符串常數以@開頭,后跟一對雙引號,在雙引號中放入字符。如:@"電子高專"@"Thisisabook."逐字字符串常數同常規字符串常數的區別:在逐字字符串常數的雙引號中,每個字符都代表其最原始的意義,在逐字字符串常數中沒有轉義字符。
注意:如果要包含雙引號("),就必須在一行中使用兩個雙引號("")。3.1.2引用類型stringstr1;//定義字符串類型stringstr2="hello,world";//規則字符串常數:hello,worldstringstr3=@"hello,world";//逐字字符串常數:hello,worldstringstr4="hello\tworld";//helloworldstringstr5=@"hello\tworld";//hello\tworldstringstr6="Hesaid\"Hello\"toyou";//Tomsaid"Hello"toyoustringstr7=@"Hesaid""Hello""toyou";//Tomsaid"Hello"toyou例:usingSystem;classTest{staticvoidMain(){Console.WriteLine(@"Thisisaverbatimstringliteralthatspansseverallines.
");Console.WriteLine(@"Hereissometabbedoutput:12345678
");Console.WriteLine(@"Programmerssay,"
"IlikeC#""");}}運行結果如下:3.1.3類型轉換數據類型在一定條件下是可以相互轉換的。C#允許使用兩種轉換的方式:隱式轉換和顯式轉換。1.隱式轉換隱式轉換是系統默認的、不需要加以聲明就可以進行的轉換。隱式數據轉換的使用方法如下:inti=518;//a為整型數據longb=i;//b為長整型數據floatf=i;//f為單精度浮點型數據故:隱式轉換發生在取值范圍從小到大時且數據不會丟失。3.1.3類型轉換2.顯式轉換顯式轉換又叫強制類型轉換,顯式轉換要明確指定轉換類型。顯式轉換格式:(類型標識符)表達式注意:(1)顯式轉換可能會導致錯誤。(2)對于將float,double,decimal轉換為整數,將通過舍入得到最接近的整型值,如果這個整型值超出目標域,則出現轉換異常。比如:(int)6.28m//轉換的結果為6 (int)3e25f//將產生溢出錯誤3.1.4裝箱和拆箱1.裝箱轉換
裝箱轉換是指將一個值類型的數據隱式地轉換成一個對象類型(object)的數據。
例如:inti=518;
objectobj=i;2.拆箱轉換和裝箱相反,拆箱轉換是指將一個對象類型的數據顯式地轉換成一個值類型數據。例如:objectobj=228;intk=(int)obj;3.1.4裝箱和拆箱
例:在程序中執行裝箱轉換。
usingSystem;classBoxingDemo{staticvoidMain(){Console.WriteLine("執行裝箱轉換:");
intk=200;objectobj=k;k=300;Console.WriteLine("obj={0}",obj);Console.WriteLine("k={0}",k);}}3.1.4裝箱和拆箱2.拆箱轉換和裝箱相反,拆箱轉換是指將一個對象類型的數據顯式地轉換成一個值類型數據。例如:objectobj=228;intk=(int)obj;3.1.4裝箱和拆箱例:在程序中使用拆箱轉換。
usingSystemclassUnboxingDemo{staticvoidMain(){intk=228;objectobj=k;//裝箱轉換
intj=(int)obj;//拆箱轉換
Console.WriteLine("k={0}\tobj={1}\tj={2}",k,obj,j);}}該程序執行后,輸出結果如下:k=228obj=228j=228練習:1.()是decimal類型數據A.123LB.123.4C.123.4FD.123.4M參考答案:D2.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97,則十六進制字符常量'0x0042'表示()A.字符aB.字符AC.字符bD.字符B參考答案:D
3.2.1常量在C#中,常量在程序的運行過程中其值是不能改變的,例如,數字100就是一個常量,這樣的常量一般被稱作常數。聲明常量的格式:
const類型標識符常量名=表達式;例:constdoublePI=3.14159265;doubler=5.2;doubles=PI*r*r;Console.Write("面積={0}",s);3.2.1常量常量特點:
在程序中,常量只能被賦予初始值。
定義常量時,表達式中的運算符對象只允許出現常量和常數,不能有變量存在。例如:intb=18;constinta=26;constintk=b+10;//錯誤,表達式中不允許出現變量constintd=a+23;//正確,因為a是常量a=56;//錯誤,不能修改常量的值3.2.2變量變量是程序運行過程中用于存放數據的存儲單元。變量的值在程序的運行過程中可以改變。1.變量的定義在定義變量時,首先必須給每一個變量起名,稱為變量名,變量名代表存儲地址。變量的類型決定了存儲在變量中的數值的類型。
變量定義格式:
類型標識符變量名1,變量名2,……;注意:C#規定,任何變量在使用前,必須先定義,后使用。3.2.2變量2.變量的賦值變量的賦值,就是將數據保存到變量所代表的存儲單元中的過程。格式:變量名=表達式;例:
intnAgeSum;
nAgeSum=210;//給nAgeSum變量賦予數值210注意:1.變量的當前值等于最近一次給變量所賦的值。 2.在對變量進行賦值時,表達式的值的類型必須同變量的類型相同。 3.變量是有作用域和生命周期的。3.2.2變量在程序中,可以給一個變量多次賦值。變量的當值等于最近一次給變量所賦的值。如:
nAgeSum=68;//這時nAgeSum等于68nAgeSum=36+24;//這時nAgeSum等于60nAgeSum=nAgeSum+40;//這這時nAgeSum等于1003.2.2變量在對變量進行賦值時,表達式的值的類型必須同變量的類型相同。
stringsName;intnScore;sName="Jack";//正確
sName="Tom";//正確
nScore=98;sName=5;//錯誤,不能將整數賦予字符串對象
nScore="Hello";//錯誤,不能字符串賦予整型變量3.2.2變量3.變量的初始化在定義變量的同時,可以對變量賦值,稱為變量的初始化。對變量進行初始化的格式如下:
類型標識符變量名=表達式;例:
stringstr="Thisisabook";練習:
判斷題:
1.C#規定所有變量必須先聲明后使用。()參考答案:正確
2.雙精度浮點數類型double由8個字節組成。()參考答案:正確3.執行constinta=10;a=a+1;這兩條語句后,a的值為11。()參考答案:錯誤填空題:
1.使用變量a存放數據-389,則將變量聲明為()類型最合適。參考答案:short3.3.1運算符
1.算術運算符
算術運算符用于對操作數進行算術運算。C#的算術運算符同數學中的算術運算符是很相似的。C#算術運算符
運算符意義運算對象數目運算對象類型運算結果類型實例+取正或加法1或2數值類型數值類型+5、6+8+a-取負或減法1或2-3、a-b*乘法23*a*b、5*2/除法27/4、a/b%模(求整數除法的余數,如7除以3的余數為2,則7%3等于2)2a%(2+5)、a%b、3%2++自增運算1a++、++b--自減運算1a--、--b例:usingSystem;classModDemo{staticvoidMain(){intiresult,irem;doubledresult,drem;iresult=10/3;irem=10%3;dresult=10.0/3.0;drem=10.0%3.0;Console.WriteLine("10/3={0}\t10%3={1}",iresult,irem);Console.WriteLine("10.0/3.0={0}\t10.0%3.0={1}",dresult,drem);}}運行結果:3.3.1運算符特殊的算術運算符:++(自增運算符)--(自減運算符)作用:使變量的值自動增加1或者減少1。
例如,x=x+1;
可以被寫成
++x;//前綴格式或者
x++;
//后綴格式3.3.1運算符
當一個自增或自減運算符在它的操作數前面時,C#將在取得操作數的值前執行自增或自減操作。如果運算符在操作數的后面,C#將先取得操作數的值,然后進行自增或自減運算。例:
x=8;y=++x;
在這種情況下,x和y被賦值為9。但是,如果代碼如下所寫:
x=8;y=x++;
那么y被賦值為8,x被賦值為9
。例:usingSystem;classTest{staticvoidMain(){intx=5;inty=x--;Console.WriteLine("y={0}",y);y=--x;Console.WriteLine("y={0}",y);}}注意:++、--只能用變量,而不能用于常量或表達式,例如12++或--(x+y)都是錯誤的。運行結果:3.3.1運算符2.賦值運算符賦值運算符用于將一個數據賦予一個變量,賦值操作符的左操作數必須是一個變量,賦值結果是將一個新的數值存放在變量所指示的內存空間中。例如:intx=8;x=x+x;x=16-x;3.3.1運算符C#的賦值運算符類型符號說明簡單賦值運算符=x=1復合賦值運算符+=x+=1等價于x=x+1-=x-=1等價于x=x-1*=1x*=1等價于x=x*1/=x/=1等價于x=x/1%=x%=1等價于x=x%13.3.1運算符可以把表達式的值通過復合賦值運算符賦予變量,這時復合賦值運算右邊的表達式是作為一個整體參加運算的。例:inta=8,b=3;a%=b*2-5;/*相當于a%=(b*2-5),它與
a=a%(b*2-5)是等價的。*/
對變量可以進行連續賦值。例:
intz=3;
x=y=z;//等價于x=(y=z)。3.3.1運算符3.關系運算符關系運算符用于比較兩個值的大小,關系運算的結果不是true就是false。
例:boola='a'<'b';//a的值為truea=3+6>5-2//a的值為false3.3.1運算符C#的關系運算符符號意義運算結果類型運算對象個數實例>大于布爾型。如果條件成立,結果為true,否則結果為false23>6,x>2,b>a<小于3.14<3,x<y>=大于等于3.26>=b<=小于等于PI<=3.1416==等于3==2,x==2!=不等于x!=y,3!=2例:usingSystem;classRelaOpr{staticvoidMain(){inta=50;intx=30;inty=60;intb;b=x+y;boolj;j=a==b-40;Console.WriteLine("a=bis{0}",j);}}運行結果:3.3.1運算符4.邏輯運算符邏輯運算符用于表示兩個布爾值之間的邏輯關系,邏輯運算結果是布爾類型。邏輯非(!):運算的結果是原先的運算結果的逆。
邏輯與(&&):只有兩個運算對象都為true,結果才為true;只要其中有一個是false,結果就為false。
邏輯或(||):只要兩個運算對象中有一個是true,結果就為true,只有兩個條件均為false,結果才為false。3.3.1運算符C#的邏輯運算符符號意義運算對象類型運算結果類型運算對象個數實例!邏輯非布爾類型布爾類型1!(i>j)&&邏輯與2x>y&&x>0||邏輯或2x>y||x>0
3.3.1運算符當需要多個判定條件時,可以很方便地使用邏輯運算符將關系表達式連接起來。例:x>y&&x>0如果表達式中同時存在著多個邏輯運算符,邏輯非的優先級最高,邏輯與的優先級高于邏輯或。例:3>2||!(5-3<6)&&'a'<'b'3.3.1運算符5.位運算符
(1)"~"運算符把二進制數的0轉換為1,1轉換為0。例:6的二進制表示:00000110~6的結果:11111001(2)"&"運算符
0&0=00&1=01&0=01&1=1
例:7的二進制表示:0000011111的二進制表示:00001011
—————————————"&"運算的結果是:00000011
即:7&11=33.3.1運算符3)"|"運算符
0|0=00|1=11|0=11|1=1
例:7的二進制表示:0000011111的二進制表示:00001011
—————————————"|"運算的結果是:00001111
即:7&11=15(4)"^"運算符
0^0=00^1=11^0=11^1=0
例:7的二進制表示:0000011111的二進制表示:00001011
—————————————"^"運算的結果是:00001100
即:7^11=123.3.1運算符(5)"<<"運算符二進制位全部按位左移,高位被丟棄,低位順序補0。例:7的二進制表示:000001117<<1結果是00001110(十進制是14)
(6)
">>"運算符二進制位全部按位右移。例:7的二進制表示:000001117>>1結果是00000011(十進制是3)3.3.1運算符6.條件運算符格式:
操作數1?操作數2:操作數3
含義:進行條件運算時,首先判斷問號前面的布爾值是true還是false,如果是true,則值等于操作數2的值;如果為false,則值等于操作數3的值。例如:條件表達式"6>8?15+a:39",由于6>8的值為false,所以整個表達式的值是39。3.3.1運算符7.其他運算符
(1)字符串連接符(+)就是將兩個字符串連接在一起,形成新的字符串。比如:"abc"+"efg"http://結果是abcefg"36812"+"3.14"http://結果是368123.143.3.1運算符(2)
is運算符
is運算符用于檢查表達式是否指定的類型,如果是,結果為true,否則結果為false。例如:
intk=2;boolisTest=kisint;//isTest=true3.3.1
運算符(3)
sizeof運算符
sizeof運算符用于獲得值類型數據在內存占用的字節數。例如:
inta=sizeof(double);//a=83.3.2表達式1.算術表達式算術表達式是用算術運算符將運算對象連接起來的符合語法規則的式子。自增運算符和自減運算符的優先級別高于其他的算術運算符。例如表達式8+x++,應看作8+(x++)。如果x的原值是6,則表達式8+x++的值是14,運算結束后x的值是7。3.3.2表達式2.賦值表達式由賦值運算符將變量和表達式連接起來的式子稱為賦值表達式。例如:y=x=8*8+3這個賦值表達式的值是67。由于賦值運算符的結合性是自右至左的,所以y=x=8*8+3和y=(x=8*8+3)是等價的。3.3.2表達式3.關系表達式用關系運算符將兩個表達式連接起來的式子稱為關系表達式。關系表達式的值是布爾類型,即真(true)或假(false)。例如:
x=8;y=6;z=x>y+3;//結果為falsea=x>y&&z;//結果為false3.3.2表達式4.邏輯表達式用邏輯運算符將關系表達式或者邏輯值連接起來的式子稱為邏輯表達式。邏輯表達式的值只能取true或false。三個邏輯運算符的運算順序為"邏輯非"最高,其次是"邏輯與",最后為"邏輯或"。例如:
!(3>6)||(5<8)&&(2>=9)||(7>=1)//結果為true3.3.2表達式5.條件表達式由條件運算符和表達式組成的式子稱為條件表達式。例如:
8>3?5:2;
其結果為5,因為8>3為true,則整個表達式的值為":"前面表達式的值,這里是常數5。練習:判斷題:1.已知a=3,b=4,則++(a+b)的結果為8。()參考答案:錯誤2.整數除法會產生一個整數商,其小數部分會被舍去。()參考答案:正確若變量a為整型,則表達式"aisint"的結果為true。()參考答案:正確選擇題1.已知inta;
stringb="123";
boolc;則正確的表達式為()A.a==10&&cB.c>120C.2*a+1D.b+"456"參考答案:D2.表達式"abcde"=="abcde"+"2006"的值為()A.True2006B.trueC.falseD.0參考答案:C讀程序,寫結果:1.usingSystem;ClassDemo{staticvoidMain(){doublex=10.0,y=3.0;byteb;inti;charch;i=(int)(x/y);Console.WriteLine("(int)(x/y)={0}",i);i=100;b=(byte)i;Console.WriteLine("b={0}",b);i=257;b=(byte)i;Console.WriteLine("b={0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國際設備租賃合同(4)管理資料
- 2025年電梯媒體廣告發布合同
- 2024年醫用X射線增強電視系統項目資金籌措計劃書代可行性研究報告
- 2024年涂布助劑項目資金籌措計劃書代可行性研究報告
- 2025全包裝修合同樣本
- 2025汽車租賃合同范本協議書格式
- 2025基礎設施貸款合同范本
- 2025年學校食堂肉類采購合同
- 2025林場轉讓合同范文
- 2025江西省采購合同示范文本
- 于丹--莊子心得
- 2023年供貨方案 醫療器械供貨方案(四篇)
- 森林病蟲害防治自測練習試題與答案
- GB/T 3728-1991工業乙酸乙酯
- GB/T 34949-2017實時數據庫C語言接口規范
- GB/T 3452.1-2005液壓氣動用O形橡膠密封圈第1部分:尺寸系列及公差
- GB/T 23641-2018電氣用纖維增強不飽和聚酯模塑料(SMC/BMC)
- 2023年國際焊接工程師考試IWE結構試題
- 精華版-趙武靈王胡服騎射課件
- 《高等教育心理學》《高等教育學》樣題
- 高等學校英語應用能力考試〔B級〕真題及答案
評論
0/150
提交評論