官术网_书友最值得收藏!

2.5 運(yùn)算符

范例3中所使用的加號(hào)“+”是C#運(yùn)算符的一種,該符號(hào)可以連接字符串,也可以執(zhí)行數(shù)值的加法運(yùn)算。C#中支持多種運(yùn)算符的使用,本節(jié)介紹C#中的常用運(yùn)算符及其使用。

2.5.1 常用運(yùn)算符

C#中的運(yùn)算符是對(duì)變量、常量或其他數(shù)據(jù)進(jìn)行計(jì)算的符號(hào),根據(jù)運(yùn)算符的操作個(gè)數(shù)可以將它分為三類:一元運(yùn)算符、二元運(yùn)算符、三元運(yùn)算符。根據(jù)運(yùn)算符所執(zhí)行的操作類型主要將它分為:算術(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、遞增運(yùn)算符、遞減運(yùn)算符、new運(yùn)算符和as運(yùn)算符。

1.算術(shù)運(yùn)算符

算術(shù)運(yùn)算符就是進(jìn)行算術(shù)運(yùn)算的操作符,如“+”“-”和“/”等。使用算術(shù)操作符將數(shù)值連接在一起,符合C#語法的表達(dá)式可以稱為算術(shù)表達(dá)式。常見的算術(shù)運(yùn)算符以及說明如表2-7所示。

表2-7 常見的算術(shù)運(yùn)算符

2.比較運(yùn)算符

比較運(yùn)算符通過比較兩個(gè)對(duì)象的大小,返回一個(gè)真/假的布爾值,比較運(yùn)算符又叫作關(guān)系運(yùn)算符。使用比較運(yùn)算符將數(shù)值連接在一起,符合C#語法的式子稱為比較表達(dá)式。常見的比較運(yùn)算符及說明如表2-8所示。

表2-8 常見的比較運(yùn)算符

3.邏輯運(yùn)算符

&&、&、^、!||以及|都被稱為邏輯運(yùn)算符或邏輯操作符,使用邏輯運(yùn)算符把運(yùn)算對(duì)象連接起來并且符合C#語法的式子稱為邏輯表達(dá)式。常見的邏輯運(yùn)算符及說明如表2-9所示。

表2-9 常見的邏輯運(yùn)算符

邏輯運(yùn)算結(jié)果是一個(gè)用真/假值來表示的布爾類型,當(dāng)操作數(shù)不同時(shí),邏輯運(yùn)算符的運(yùn)算結(jié)果也可以不同,如表2-10所示演示了操作運(yùn)算的真假值結(jié)果。

表2-10 常見的邏輯運(yùn)算符真值表

4.賦值運(yùn)算符

賦值運(yùn)算符用于變量、屬性、事件或索引器元素賦新值,它可以把右邊操作數(shù)的值賦予左邊。C#中常見的賦值操作符包括=、+=、-=、*=、/=、%=、^=、&=、!=、<<=和>>=等,它們的具體說明如表2-11所示。

表2-11 常見的賦值運(yùn)算符

表2-11中已經(jīng)列出了常見的賦值運(yùn)算符,下面將對(duì)左移賦值、右移賦值和位與賦值進(jìn)行介紹。

1)<<=(左移賦值運(yùn)算符)

左移是將<<左邊的二進(jìn)制位右移若干位,<<右邊的數(shù)指定移動(dòng)位數(shù),高位丟棄,低位補(bǔ)0,移幾位就相當(dāng)于乘以2的幾次方。

2)>>=(右移賦值運(yùn)算符)

右移賦值運(yùn)算符是用來將一個(gè)數(shù)的各二進(jìn)制位右移若干位,移動(dòng)的位數(shù)由右操作數(shù)指定(右操作數(shù)必須是非負(fù)值),移到右端的低位被舍棄,對(duì)于無符號(hào)數(shù),高位補(bǔ)0。對(duì)于有符號(hào)數(shù),某些機(jī)器將對(duì)左邊空出的部分用符號(hào)位填補(bǔ)(即算術(shù)移位),而另一些機(jī)器則對(duì)左邊空出的部分用0填補(bǔ)(即邏輯移位)。

3)&=(位與賦值運(yùn)算符)

位與賦值運(yùn)算符是指參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1;否則為0。這里的1可以理解為邏輯中的true,而0可以理解為邏輯中的false。

5.條件運(yùn)算符

條件運(yùn)算符是指?:運(yùn)算符,它也通常被稱為三元運(yùn)算符或三目運(yùn)算符,使用條件運(yùn)算符將運(yùn)算對(duì)象連接起來并且符合C#語法的式子稱為邏輯表達(dá)式。如下代碼所示為條件運(yùn)算符的一般語法。

    b = (a>b) ? a:b;

上述語法中?和:都是關(guān)鍵符號(hào),?前面通常是一個(gè)比較表達(dá)式(即關(guān)系表達(dá)式),后面緊跟著兩個(gè)變量a和b。?用來判斷前面的表達(dá)式,如果表達(dá)式的結(jié)果為true則返回值為a,如果前面表達(dá)式的結(jié)果為false則返回值為b。

例如,聲明一個(gè)docname變量表示醫(yī)生的名稱,接著通過GetType()方法獲取該變量的類型,并且通過IsValueType判斷是否為值類型,如果是則返回“值類型”,否則返回“引用類型”。然后將返回的結(jié)果保存到country變量中,最后將結(jié)果在控制臺(tái)輸出。其具體代碼如下所示。

    string docname = "angel";
    string country = docname.GetType().IsValueType ? "值類型":"引用類型";
    Console.WriteLine(country);

6.其他特殊運(yùn)算符

C#中包含多種運(yùn)算符,除了上面介紹的運(yùn)算符外,還包括其他的一些特殊運(yùn)算符,如表2-12所示對(duì)這些運(yùn)算符進(jìn)行了介紹。

表2-12 其他特殊運(yùn)算符

2.5.2 運(yùn)算符的使用

運(yùn)算符可以在C#語句中使用。但如果一條語句中同時(shí)有著多個(gè)運(yùn)算符,那么這些運(yùn)算符是否會(huì)相互沖突?是否會(huì)順序進(jìn)行?還是像數(shù)學(xué)運(yùn)算符一樣有著優(yōu)先級(jí)關(guān)系呢?

C#運(yùn)算符與數(shù)學(xué)運(yùn)算符控制著不同的領(lǐng)域,有著相同和不同的運(yùn)算符。但是,C#中的運(yùn)算符同樣有著優(yōu)先級(jí)關(guān)系,如同數(shù)學(xué)運(yùn)算中,乘法的優(yōu)先級(jí)大于加法。

當(dāng)用戶在語句中使用多個(gè)運(yùn)算符時(shí),需要根據(jù)運(yùn)算的優(yōu)先級(jí)別進(jìn)行計(jì)算。如表2-13所示列出了C#運(yùn)算符的優(yōu)先級(jí)別與結(jié)合性。

表2-13 C#中運(yùn)算符的優(yōu)先級(jí)與結(jié)合性

【范例4】

三角形可以有內(nèi)切圓和外接圓,三角形和圓都是常見的相互關(guān)聯(lián)的圖形?,F(xiàn)有半徑為4的圓和三邊分別為7.5、10、12.5的三角形,計(jì)算它們的周長(zhǎng)和面積,比較三角形和圓形的周長(zhǎng)和面積。

三邊分別為7.5、10、12.5的三角形可以看出是直角三角形,面積是7.5×10/2。計(jì)算并比較圖形的周長(zhǎng)和面積,要求在比較的時(shí)候使用整型數(shù)據(jù)類型,代碼如下。

     int r = 4;                                    //圓的半徑
     double l1=7.5,l2=10,l3=12.5;               //三角形的邊長(zhǎng)
     double roundl = 2 * 3.14 * r;               //圓的周長(zhǎng)
     double rounds = 3.14 * r* r;                //圓的面積
     double trianglel = l1 + l2 + l3;          //三角形周長(zhǎng)
     double triangles = l1 * l2 / 2;           //三角形面積
     int roundlint = (int)roundl;                //浮點(diǎn)型轉(zhuǎn)換為整型
     int roundsint = (int)rounds;
     int trianglelint = (int)trianglel;
     int trianglesint = (int)triangles;
     double maxnuml = (roundlint > trianglelint) ? roundlint : trianglelint;
    //找出較大的周長(zhǎng)值
     string maxl = (roundl > trianglel) ? "圓形":"三角形";//找出周長(zhǎng)較大的圖形
     double maxnums = (roundsint > trianglesint) ? roundsint : trianglesint;    
    //找出較大的面積值
     string maxs = (rounds > triangles) ? "圓形":"三角形";//找出面積較大的圖形
     Console.WriteLine("圓形周長(zhǎng){0},面積{1}", roundl, rounds);
     Console.WriteLine("三角形周長(zhǎng){0},面積{1}", trianglel, triangles);
     Console.WriteLine("{0}周長(zhǎng)較大,為 {1}", maxl, maxnuml);            
    //輸出周長(zhǎng)較大的圖形及面積
     Console.WriteLine("{0}面積較大,為 {1}", maxs,maxnums );        
    //輸出面積較大的圖形及面積

上述代碼的執(zhí)行結(jié)果如下所示。

    圓形周長(zhǎng)25.12,面積50.24
    三角形周長(zhǎng)30,面積37.5
    三角形周長(zhǎng)較大,為 30
    圓形面積較大,為 50

上述代碼中,半徑原本是整型,在計(jì)算過程中被作為浮點(diǎn)型來使用,其圓的面積和周長(zhǎng)都是浮點(diǎn)型。而面積和周長(zhǎng)計(jì)算之后又通過顯式轉(zhuǎn)換而轉(zhuǎn)換為整型參與比較,使用條件運(yùn)算符獲取周長(zhǎng)和面積較大的圖形及其周長(zhǎng)的面積的值。

主站蜘蛛池模板: 泊头市| 临猗县| 邵阳县| 贵溪市| 枣强县| 衢州市| 竹山县| 鲁山县| 磐安县| 宽甸| 香格里拉县| 霸州市| 孟村| 德保县| 洪湖市| 南投县| 宾阳县| 府谷县| 个旧市| 宣城市| 海原县| 望江县| 云霄县| 青河县| 米易县| 桦甸市| 普兰县| 会昌县| 台湾省| 肥城市| 阜康市| 沧源| 柞水县| 鄂伦春自治旗| 新丰县| 水富县| 朝阳区| 安徽省| 绵竹市| 高州市| 河池市|