




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章語句、運算符和表達式C#語言語句、運算符和表達式的基本概念算術運算符關系和類型測試運算符邏輯運算符賦值運算字符串運算符位運算符條件運算符運算符優先級表達式的組成和書寫規則3.1語句(1)語句(statement)是C#程序的過程構造塊,用于聲明變量和常量、創建對象、變量賦值、調用方法、控制分支、創建循環等。語句通常以分號終止。由花括號({和
})括起來的一系列語句構成代碼塊(block)3.1語句(2)聲明語句(declarationstatement)用于聲明局部變量和常量表達式語句(expressionstatement)用于對表達式求值。可用作語句的表達式包括方法調用、使用
new運算符的對象分配、使用
=和復合賦值運算符的賦值,以及使用
++和
--運算符的增量和減量運算選擇語句(selectionstatement)用于根據表達式的值從若干個給定的語句中選擇一個來執行。這一組語句有
if和
switch語句迭代語句(iterationstatement)用于重復執行嵌入語句。這一組語句有
while、do、for和
foreach
語句跳轉語句(jumpstatement)用于轉移控制。這一組語句有
break、continue、goto、return、和throw語句等try...catch語句用于捕獲在塊的執行期間發生的異常,try...finally語句用于指定終止代碼,不管是否發生異常,該代碼都始終要執行checked語句和
unchecked語句用于控制整型算術運算和轉換的溢出檢查上下文lock語句用于獲取某個給定對象的互斥鎖,執行一個語句,然后釋放該鎖using語句用于獲得一個資源,執行一個語句,然后釋放該資源常用符號分類關鍵字(Keyword)又稱為保留字,C#預先規定的具有固定含義的一些單詞,賦予特殊的含義
標識符(Identifier)系統預定義標識符用戶自定義標識符運算符(Operator)+,-,*,…
分隔符(Separator)空格、回車/換行、逗號等其它符號大花括號“{”和“}”通常用于標識函數體或者一個語句塊“/*”和“*/”是程序注釋所需的定界符3.2運算符C#運算符(operator)是術語或符號,用于在表達式中對一個或多個稱為操作數的進行計算并返回結果值。接受一個操作數的運算符被稱作一元運算符,例如增量運算符(++)或new。接受兩個操作數的運算符被稱作二元運算符,例如算術運算符+、-、*、/。接受三個操作數的運算符被稱作三元運算符,條件運算符“?:”是C#中唯一的三元運算符
C#運算符種類算術運算符關系和類型測試運算符邏輯運算符賦值運算符字符串運算符位運算符條件運算符其他運算符1.算術運算符算術運算符用于對操作數進行算術運算。C#的算術運算符同數學中的算術運算符是很相似的。運算符含義說明優先級實例/num=8結果++增量操作數加
11++num,num++9--減量操作數減
11--num,num--7+一元+操作數的值2+num8-一元-操作數的反數2-num-8*乘法操作數的積3num*num*2128/除法第二個操作數除第一個操作數310/num10.0/num11.25%模數第二個操作數除第一個操作數后的余數310%num8%2.221.4+加法兩個操作數之和410+num18-減法從第一個操作數中減去第二個操作數410-num2注意(1)算術運算符兩邊的操作應是數值型。若是字符型,則自動轉換成字符所對應的ASCII碼值后再進行運算(2)增量運算符(++、--)可以出現在操作數之前(++variable、--variable)或之后(variable++、variable--)(3)對于字符串類型則+表示拼接操作字符串。doublex=5.8;Console.WriteLine(“{0}”,x+“5”);//字符串拼接//注意:double自動轉換為string后再拼接,對x類型無影響(4)
對于字符類型,轉換為ASCII碼值,進行數值相加
Console.WriteLine("'5'+'5'={0},'A'+'A'={1}",'5'+'5','A'+'A')usingSystem;classModDemo{ staticvoidMain() {
int
iresult,irem; doubledreult,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);}}程序的輸出如下所示:10/3=310%3=110.0/3.0=3.3333333333333310.0%3.0=1例特殊的算術運算符++(自增運算符)--(自減運算符)作用:使變量的值自動增加1或者減少1例如,x=x+1;
++x;//前綴格式或者
x++;
//后綴格式例:
x=8;y=++x;
在這種情況下,x和y被賦值為9。但是,如果代碼如下所寫:
x=8;y=x++;
那么y被賦值為8,x被賦值為9
。當一個自增或自減運算符在它的操作數前面時,C#將在取得操作數的值前執行自增或自減操作。如果運算符在操作數的后面,C#將先取得操作數的值,然后進行自增或自減運算。
注意usingSystem;classTest{ staticvoidMain(){
intx=5;
inty=x--;
Console.WriteLine("y={0}",y); y=--x;
Console.WriteLine("y={0}",y);}}
結果:y=5y=3
注意:++、--只能用變量,而不能用于常量或表達式,例如5++或--(x+y)都是錯誤的。例usingSystem;classcount{staticvoidMain(){
intVal1=2;
intVal2=3;Console.WriteLine(“Val1*Val2={0}”,Val1*Val2);Console.WriteLine(“Val1/Val2={0}”,Val1/Val2);Console.WriteLine(“Val1%Val2={0}”,Val1%Val2);
Console.WriteLine(++Val1);Console.WriteLine(--Val2);Console.WriteLine(Val1++);Console.WriteLine(Val2--);}}結果:例【例3.2】算術運算符++、--、一元+、一元-、二元+、二元-、*、/、%等綜合示例doublex,y;x=1.5;y=++x;Console.WriteLine("x={0},y={1}",x,y);x=1.5;y=x++;x=5.8;inti=5;Console.WriteLine("x={0},y={1}",x,y);inti=5;Console.WriteLine("i={0},+i={1}",i,+i);//一元+Console.WriteLine("i+5={0},i+.5={1}",i+5,i+.5);//加法Console.WriteLine("x={0},x+\"5\"={1}",x,x+"5");//字符串拼接//注意:double自動轉換為stringConsole.WriteLine("'5'+'5'={0},'A'+'A'={1}",'5'+'5','A'+'A')//字符轉換為ASCII碼值,進行數值相加i=5;Console.WriteLine("i/2={0},-i/2.1={1}",i/2,-i/2.1);2.關系運算符
關系運算符用于比較兩個值的大小,關系運算的結果不是true就是false。例:
boola=‘a’<‘b’;//a的值為truea=3+6>5-2//a的值為true注意:關系運算符的優先級相同。對于兩個預定義的數值類型,關系運算符按照操作數的數值大小進行比較。對于string類型,關系運算符比較字符串的值,即按字符的ASCII碼值從左到右一一比較:首先比較兩個字符串的第一個字符,其ASCII碼值大的字符串大,若第一個字符相等,則繼續比較第二個字符,依此類推,直至出現不同的字符為止。表
C#的關系運算符運算符含義實例結果==相等"ABCDEF"=="ABCD"False!=不等"ABCD"!="abcd"True>大于56>134False>=大于等于123>=23False<小于‘4’<56True<=小于等于78.8<=90TruexisT數據x是否屬于類型TmyArrayisintmyArrayisint[]FalseTruexasT返回轉換為類型T的x,如果x不是T則返回nullmyArrayasint[]myArrayasobjectSystem.Int32[]System.Int32[]注意字符串的比較通常用==和!=,不允許直接用>,<,>=,<=關系運算符,采用以下方式:String.Compare(“哎”,“b”);//返回1,表明前面的字符串大。例:usingSystem;classRelaOpr{staticvoidMain(){
inta=50;
intx=30;
inty=60;
intb;b=x+y;
boolj;j=a==b-40;
Console.WriteLine(“a=bis{0}”,j);}}該程序運行后,輸出結果為:
a=bisTrue
3.邏輯運算符邏輯運算符用于表示兩個布爾值之間的邏輯關系,邏輯運算結果是布爾類型。邏輯非(!):運算的結果是原先的運算結果的逆。
邏輯與(&&):只有兩個運算對象都為true,結果才為true;只要其中有一個是false,結果就為false。
邏輯或(||):只要兩個運算對象中有一個是true,結果就為true,只有兩個條件均為false,結果才為false。
運算符含義說明優先級實例結果!邏輯非當操作數為False時返回True;當操作數為True時返回False1!True!FalseFalseTrue&邏輯與兩個操作數均為True時,結果才為True,否則為False2True&TrueTrue&FalseFalse&TrueFalse&FalseTrueFalseFalseFalse^邏輯異或兩個操作數不相同,即一個為True一個為False時,結果才為True,否則為False3True^TrueTrue^FalseFalse^TrueFalse^FalseFalseTrueTrueFalse|邏輯或兩個操作數中有一個為True時,結果即為True,否則為False4True|TrueTrue|FalseFalse|TrueFalse|FalseTrueTrueTrueFalse&&條件與兩個操作數均為True時,結果才為True。但僅在必要時才計算第二個操作數5True&&TrueTrue&&FalseFalse&&TrueFalse&&FalseTrueFalseFalseFalse||條件或兩個操作數中有一個為True時,結果即為True。但僅在必要時才計算第二個操作數6True||TrueTrue||FalseFalse||TrueFalse||FalseTrueTrueTrueFalse當需要多個判定條件時,可以很方便地使用邏輯運算符將關系表達式連接起來。例:x>y&&x>0
如果表達式中同時存在著多個邏輯運算符,邏輯非的優先級最高,邏輯與的優先級高于邏輯或。例:3>2||!(5-3<6)&&’a’<‘b’4.位運算符
(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=3
(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=12
(5)“<<”運算符
二進制位全部按位左移,高位被丟棄,低位順序補0。
例:7的二進制表示:000001117<<1結果是00001110(十進制是14)
對于一個int類型(32位)如果左移33位,則相當于1位
(6)
“>>”運算符二進制位全部按位右移。補首位(0或者1)
例:7的二進制表示:000001117>>1結果是00000011(十進制是3)【例3.3】邏輯運算符!、&、&&、|、||、^等示例【例3.4】位運算符<<、>>示例位運算優先級運算符含義優先級實例結果~按位求補1~0xf80xffffff07<<左移20x1<<10x2>>右移20xffffffff>>10x7fffffff&按位邏輯與30xf8&0x3f0x38^按位邏輯異或40xf8^0x3f0xc7|按位邏輯或50xf8|0x3f0xff例shorta=10;
ushortb=10;
intc=10;
uintd=10;Console.WriteLine(~10);Console.WriteLine("short:{0}",~a);Console.WriteLine("ushort:{0}",~b);Console.WriteLine("int:{0}",~c);Console.WriteLine("uint:{0}",~d);5.賦值運算符賦值運算符用于將一個數據賦予一個變量,賦值操作符的左操作數必須是一個變量,賦值結果是將一個新的數值存放在變量所指示的內存空間中。(1)簡單賦值語句:變量名
=表達式;(2)復合賦值語句例如:
intx=8;x=x+x;x=16-x;運算符含義舉例等效于+=加法賦值sum+=itemsum=sum+item-=減法賦值count-=1count=count–1*=乘法賦值x*=y+5x=x*(y+5)/=除法賦值x/=y-zx=x/(y-z)%=取模賦值x%=2x=x%2<<=左移賦值x<<=yx=x<<y>>=右移賦值x>>=yx=x>>y&=與賦值x&=5>3x=x&(5>3)|=或賦值x|=truex=x|true^=異或賦值x^=yx=x^y表
C#的賦值運算符可以把表達式的值通過復合賦值運算符賦予變量,這時復合賦值運算右邊的表達式是作為一個整體參加運算的。例:
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)。
6.條件運算符格式:
操作數1?操作數2:操作數3
含義:進行條件運算時,首先判斷問號前面的布爾值是true還是false,如果是true,則值等于操作數2的值;如果為false,則值等于操作數3的值。例如:條件表達式“6>8?15+a:39”,由于6>8的值為false,所以整個表達式的值是39。7.其他運算符
(1)字符串連接符(+)就是將兩個字符串連接在一起,形成新的字符串。比如:“abc”+“efg”//結果是abcefg“36812”+“3.14”//結果是368123.1432.5+“99”//結果是32.59932.5默認雙精度被自動轉換成string,詳見注意3注意:當其中的一個操作數是字符串類型或兩個操作數都是字符串類型時,二元+運算符執行字符串串聯。在字符串串聯運算中,如果它的一個操作數為null,則用空字符串來替換此操作數。否則,任何非字符串參數都通過調用從object類型繼承的虛ToString方法,轉換為它的字符串表示形式。如果ToString返回null,則替換成空字符串。
(2)
is運算符
is運算符用于檢查表達式是否指定的類型,如果是,結果為true,否則結果為false。例如:
intk=2;
bool
isTest=kisint;//isTest=true
(3)
sizeof運算符
sizeof運算符用于獲得值類型數據在內存占用的字節數。sizeof用于獲取值類型的字節大小,僅適用于值類型,而不適用于引用類型。例如:
inta=sizeof(double);//a=8
(4)
typeof(數據類型)//結果是CTS的類型對象注意:
typeof用于獲取類型的System.Type對象;若要獲取變量或者表達式的運行時類型,可以使用.NETFramework方法GetType()。不能對表達式或變量用typeof
;只能采用GetType().例如:正確:System.Typetype=typeof(int);
System.Typet1=typeof(bool);//typeof內只能寫數據類型
intradius=5;
System.Typet2=radius.GetType();錯誤:System.Typet3=typeof(radius);錯誤!!【例3.6】typeof運算符示例8運算符優先級表達式中的運算符按照運算符優先級(precedence)的特定順序和結合性規則計算表3-6按優先級從高到低的順序列出各運算符類別,同一類別中的運算符優先級相同3.3表達式表達式的組成表達式由操作數(變量、常量、函數)、運算符和圓括號按一定規則組成。表達式通過運算后產生運算結果,運算結果的類型由操作數和運算符共同決定。表達式的書寫規則(1)乘號不能省略,例如,a乘以b應寫為a*b。(2)括號必須成對出現,而且只能使用圓括號;圓括號可以嵌套使用。(3)表達式從左到右在同一個基準上書寫,無高低、大小區分
1.算術表達式算術表達式是用算術運算符將運算對象連接起來的符合語法規則的式子。自增運算符和自減運算符的優先級別高于其他的算術運算符。例如表達式8+x++,應看作8+(x++)。如果x的原值是6,則表達式8+x++的值是14,運算結束后x的值是7。
2.賦值表達式由賦值運算符將變量和表達式連接起來的式子稱為賦值表達式。例如:
y=x=8*8+3
這個賦值表達式的值是67。由于賦值運算符的結合性是自右至左的,所以y=x=8*8+3和y=(x=8*8+3)是等價的。
3.關系表達式用關系運算符將兩個表達式連接起來的式子稱為關系表達式。關系表達式的值是布爾類型,即真(true)或假(false)。例如:
x=8;y=6;z=x>y+3;//結果為falsea=x>y&&z;//結果為false
4.邏輯表達式
用邏輯運算符將關系表達式或者邏輯值連接起來的式子稱為邏輯表達式。邏輯表達式的值只能取true或false。
三個邏輯運算符的運算順序為“邏輯非”最高,其次是“邏輯與”,最后為“邏輯或”。例如:
!(3>6)||(5<8)&&(2>=9)||(7>=1)
//結果為true5.條件表達式(自右向左結合性)由條件運算符和表達式組成的式子稱為條件表達式。例如:
8>3?5:2;
其結果為5,因為8>3為true,則整個表達式的值為“:”前面表達式的值,這里是常數5。【例3.7】C#表達式示例
練習:判斷題:已知a=3,b=4,則++(a+b)的結果為8。()整數除法會產生一個整數商,其小數部分會被舍去。()若變量a為整型,則表達式“aisint”的結果為true。()選擇題1.已知
inta;stringb=”123”;
boolc;
則有錯誤的表達式為()
A.a==10&&cB.c>120C.2*a+1D.b+”456”2.表達式“abcde”==”abcde”+”2006”的值為()
A.True2006B.trueC.falseD.0讀程序,寫結果: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}”,b);b=66;
ch=(char)b;
Console.WriteLine(“ch={0}”,ch);}}結果:
2.usingSystem;classLogicalOperator
{staticvoidMain(){
inti=1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CWAN 0049-2021立式儲罐無軌導爬壁焊接機器人焊接工藝規范
- T/CTWPDA 11-2020超高密度纖維板
- T/CSRA 22-2023聚碳酸酯回收雙酚A
- T/CRIA 16020-2024食品輸送帶
- T/CPUMT 004-2022廚余垃圾微生物處理設備
- T/CNCA 057-2023煤炭行業健康企業建設指南
- T/CIMA 0012-2019火鍋底料中嗎啡、可待因膠體金免疫層析檢測卡
- T/CI 120-2023智慧科技館建設導則
- T/CHTS 10138-2024高速公路服務區收費站設計指南
- T/CHATA 019-2022肺結核患者管理移動應用程序的功能及應用規范
- 石油開采業的大數據應用與數據分析
- 中心靜脈導管相關血流感染課件
- 風濕免疫疾病的患者教育和自我管理
- 《冷凝器設計》課件
- PDF-規范標準資料
- (完整PPT)上海英文介紹
- 2025年日歷日程表含農歷可打印
- 銳意進取開拓新市場
- 《電力工程電纜設計規范》
- 人工挖孔樁計算書及相關圖紙
- 穿脫隔離衣操作考核評分標準
評論
0/150
提交評論