C#OOP之二 變量和表達(dá)式(cctv5體育節(jié)目表)

      網(wǎng)友投稿 659 2025-04-02

      2.1? C#的基本語法


      C#代碼的外觀和操作方式與C++和Java非常相似。初看起來,其語法比較混亂,

      不像書面英語和其他語言。但是,在C#編程中,使用的樣式是比較清晰的,不用花太多的力氣就可以編寫出可讀性很強(qiáng)的代碼。

      與其他語言的編譯器不同,無論代碼中是否有空格或回車符或tab字符(這些字符統(tǒng)稱為空白字符),C#編譯器都不考慮這些字符。這樣格式化代碼時就有很大的自由度,但遵循某些規(guī)則將有助于使代碼易于閱讀。

      C#代碼由一系列語言組成,每一個語句都用一個分號來結(jié)束。因?yàn)榭崭癖缓雎裕砸恍锌梢杂卸鄠€語句,但從可讀性的角度來看,通常在分號后面加上回車符,這樣就不能在一行上放置多個語句了。但一句代碼放在多個行上是可以的。

      C#是一塊結(jié)構(gòu)的語言,所有的語句都是代碼塊的一部分。這些塊用花括號來界定(“{”和“}”),代碼塊可以包含任意多行語句,或者根本不包含語句。注意花括號字符不需要附帶分號。

      所以,簡單的C#代碼如下所示:

      {

      ;

      ;

      }

      其中部分并不是正真的C#代碼,而是用這個文本作為C#語句的占位符。注意在這段代碼中,第2,3行代碼是同一個語句的一部分,因?yàn)樵诘?行的末尾沒有分號。

      在這個簡單的代碼中,還使用了縮進(jìn)格式,使C#代碼的可讀性更高。這不是某些人的發(fā)明,而是一個標(biāo)準(zhǔn)規(guī)則,實(shí)際上在默認(rèn)情況下VS會自動縮進(jìn)代碼。一般情況下,每個代碼都會有自己的縮進(jìn)級別,即它向右縮進(jìn)了多少。代碼塊可以互相嵌套,而被嵌套的塊要縮進(jìn)得多一些。

      {

      ;

      {

      ;

      ;

      }

      ;

      }

      前面代碼的續(xù)寫通常也要所近得多一些,如上面第一個示例中的第3行代碼。

      在C#代碼中,另一個常見的語句是注釋。注釋并不是嚴(yán)格意義上的C#代碼,但代

      碼最好有注釋。注釋就是解釋,即給代碼添加描述性文本,編譯器會忽略這些內(nèi)容。在開始處理比較長的代碼段時,注釋可用于給正在進(jìn)行的工作添加提示,例如“這行代碼要求用戶輸入一個數(shù)字”,或“這段代碼由Bob編寫”。C#添加注釋的方式有兩種。可以在注釋的開頭和結(jié)尾放置標(biāo)記,也可以使用一個標(biāo)記,其含義是“這行代碼的其余部分是注釋”。在C#編譯器忽略回車符的規(guī)則中,后者是一個例外,但這是一種特殊情況。

      要使用第一種方式標(biāo)記注釋,可以在注釋的開頭加上“/*”,在末尾加上“*/”。這些注釋符號可以在單獨(dú)一行上,也可以在不同的行上,注釋符號之間的所有內(nèi)容都是注釋。注釋中唯一不能輸入的是“*/”,因?yàn)樗鼤豢醋髯⑨尳Y(jié)束標(biāo)記。所以下面的語句是正確的。

      /* This is a comment */

      /* And so…

      …is this!*/

      但下面的語句會產(chǎn)生錯誤:

      /*Comments often end with “*/”characters*/

      注釋結(jié)束符號后的內(nèi)容(“*/”后面的字符)會被當(dāng)作C#代碼,因此產(chǎn)生錯誤。

      另一個添加注釋的方法是用“//”開始一個注釋,其后可以編寫任何內(nèi)容,只要這些內(nèi)容在一行上可即可。下面的語句是正確的:

      //? 雙行注釋

      但下面的語句會失敗,因?yàn)榈诙写a會解釋為C#代碼:

      //So is this,

      But this bit isn’t.

      這類注釋可用于語句的說明,因?yàn)樗麄兌挤旁谝恍猩希?/p>

      ;? //Explanation of statement

      前面說過有兩種方法給C#代碼添加注釋。但在C#中,還有第三類注釋,嚴(yán)格地說,這是//語法的擴(kuò)展。他們都是單行注釋,用三個“/”符號來開頭,而不是兩個。

      /// 特殊的注釋

      在正常情況下,編譯器會忽略他們,就像其他注釋一樣,但可以配置VS,在編譯項(xiàng)目時,提取這些注釋后面的文本,創(chuàng)建一個特殊格式的文本文件,該文件可用于創(chuàng)建文檔說明書。

      特別要注意的一點(diǎn)是,C#代碼是區(qū)分大小寫的。與其他語言不同,必須使用正確的大小寫形式輸入代碼,因?yàn)楹唵蔚赜么笮懽帜复嫘懽帜笗袛囗?xiàng)目的編譯。

      2.2???? 變量

      首先我們應(yīng)該說明一下為什么計(jì)算機(jī)語言會需要變量,我們來看一個例子。假如你

      現(xiàn)在要去買一臺電腦,假設(shè)我們知道這臺電腦的標(biāo)價是5000元,而現(xiàn)在恰逢國慶節(jié)打折,折扣率是10%,我們現(xiàn)在來計(jì)算這臺電腦的價格。一般情況下我們會這樣計(jì)算:首先我們要求出折扣了多少錢5000*10%=500元,然后我們只需要用5000-500就可以求出真實(shí)價格4500元。很顯然在這里又一個問題:我們開始算出來的500這個折扣額需要在后面使用,在日常生活中,我們可以把這個數(shù)寫在紙上或記住,然后再做后面的運(yùn)算。那么對于計(jì)算機(jī)來說需要怎么做才能完成任務(wù)呢,事實(shí)上,計(jì)算機(jī)會把這個值記在內(nèi)存里,以便進(jìn)行下面的運(yùn)算,這就用到了變量。什么是變量?變量就是程序語言中存儲數(shù)據(jù)的基本單元。

      計(jì)算機(jī)操作如下:

      1.?????? 首先定義變量存儲電腦價格5000。

      2.?????? 執(zhí)行價格*10%求出折扣額。

      3.?????? 將折扣額這個中間結(jié)果存入變量。

      4.?????? 將價格與折扣額相減。

      5.?????? 將真是的價格存入結(jié)果變量。

      顯而易見,變量對應(yīng)一塊能存東西的內(nèi)存單元。程序語言通常使用變量來存儲數(shù)據(jù),使用變量可以引用存儲在內(nèi)存中的數(shù)據(jù),并隨時根據(jù)需要顯示數(shù)據(jù)或修改數(shù)據(jù)。另外如前所述,變量是有類型的,不同類型的變量可以存儲不同數(shù)據(jù)類型的數(shù)據(jù)。數(shù)據(jù)類型的概念我們稍后再說,下面來看一下C#中變量定義的語法:

      數(shù)據(jù)類型 名?? 變量名

      數(shù)據(jù)類型名? 變量名=初始值

      比如我們可以定義整型的年齡變量:

      int?age=20;

      上面我們定義了一個整型的變量age,并且讓這個變量的初始值為20。當(dāng)你定義一個變量后,系統(tǒng)會根據(jù)此變量的數(shù)據(jù)類型為這個變量分配一塊存儲數(shù)據(jù)的內(nèi)存,此后可以通過變量名來引用這個變量(就好比人名可以引用某個人一樣)。

      2.2.1?? 簡單類型

      變量中,簡單類型實(shí)際上就是值類型,值類型的數(shù)據(jù)類型基本上可以歸納為三類:

      第一類是整數(shù)型,包括int,long等,他們都可以定義整數(shù)變量。第二類是浮點(diǎn)型,它們包括float,double等,他們可以定義小數(shù)類型的變量。第三類是字符型和布爾型,包括char,bool等類型,他們可以定義字符串或者邏輯類型的變量。

      整數(shù)類型的常用類型有(如下表):

      名????? 稱

      符號

      大小(字節(jié))

      范????? 圍

      字節(jié)類型

      sbyte

      1

      -128到127

      無符號字節(jié)類型

      byte

      1

      0到255

      整型

      int

      4

      -2147483648到2147483647

      無符號整型

      uint

      4

      0到4294967295

      短整型

      short

      2

      -32768到32767

      無符號短整型

      ushort

      2

      0到65535

      長整型

      long

      8

      -9223372036854775808到9223372036854775807

      無符號長整型

      ulong

      8

      0到18446744073709551615

      整數(shù)型也叫整形,是最常用的數(shù)據(jù)類型。使用整數(shù)定義的變量只能存儲整型的數(shù)字,各種整型變量對應(yīng)的內(nèi)存參照表中的“大小”一欄,變量能保存的數(shù)值范圍參照表中“范圍”一欄。我們可以用整型定義人的年齡,國家的人口,日期的天數(shù)以及商品的數(shù)量等。

      你可能會用疑問,不就是一個整數(shù)么,為什么整數(shù)需要這么多數(shù)據(jù)類型,而且你會發(fā)現(xiàn)每一種數(shù)據(jù)類型都有無符號和有符號兩種。實(shí)際上,不管是int還是byte,不管是有符號還是無符號,都是為了更精確的說明和體現(xiàn)變量的真正含義,比如你定義天數(shù)最好使用ushort,因?yàn)樘鞌?shù)沒有負(fù)數(shù)并且天數(shù)的范圍剛好適合ushort,一旦你這樣定義了,那么如果給天數(shù)一個負(fù)數(shù)或者給天數(shù)一個特大的數(shù),編譯器將提示你這個數(shù)字不合法。這就可以初步保證正確的使用該變量。

      整數(shù)型就先介紹到這里,下面我們來看常用的浮點(diǎn)型(如下表):

      名????? 稱

      符號

      大小(字節(jié))

      范????? 圍

      浮點(diǎn)型

      float

      4

      +-

      雙精度浮點(diǎn)型

      double

      8

      高精度浮點(diǎn)型

      decimal

      16

      浮點(diǎn)型可以表示小數(shù)或整數(shù)值,也因此浮點(diǎn)型的變量可以保存整數(shù)和小數(shù)兩種數(shù)字。雖然說浮點(diǎn)型也可以保存整數(shù)數(shù)字,但浮點(diǎn)型真正的用途是來表示有精度要求的小數(shù)。比如正弦值等。

      各類浮點(diǎn)型變量的內(nèi)存大小參照上表中“大小”一欄,通常越大的浮點(diǎn)型能保存的數(shù)值精度越高。

      對于浮點(diǎn)型的數(shù)字通常要使用后綴來指明其數(shù)據(jù)類型。對于decimal類型的數(shù)字要使用后綴m或M;對于float類型的數(shù)字要使用后綴f或F;對于double類型的數(shù)字要使用后綴df或D,如20.4d等。這里要注意:如果一個小數(shù)沒有使用后綴,那么此小數(shù)數(shù)值默認(rèn)情況下是double類型。如果你將一個double類型的數(shù)值給一個float變量就會發(fā)生類型不匹配的錯誤,如:

      float? m=2.2;

      “2.2”默認(rèn)為double型,要給浮點(diǎn)型變量賦值應(yīng)該為:

      float? m=2.2f;

      上面介紹了整數(shù)型和浮點(diǎn)型,最好我們來看字符型和布爾型(如下表):

      名????? 稱

      符號

      大小(字節(jié))

      范????? 圍

      字符型

      char

      2

      16位 Unicode 字符

      布爾型

      bool

      1

      true 和false

      字符型變量用于保存和表示世界上已知書面語言中的一個字符。對于C#中的字符

      型,熟悉C/C++語言的朋友要特別注意,在C/C++語言中char型大小為一個字節(jié),只能表示一個英文字符,而C#中字符型有兩個字節(jié),可以表示世界上任何語言的字符。在C#中表示一個字符時應(yīng)該帶有單引號,字符類型變量的定義和使用方法如下:

      char enchar=’M’;

      char cnchar=’ 國’;

      對于布爾型,它可以用來表示邏輯判斷的“真”和“假”。翻開邏輯學(xué)相關(guān)的書籍你會找到“真”和“假”的含義,我們說,給一個命題比如“所有人是動物“,如果這個命題成立,我們就認(rèn)為此命題返回的結(jié)果為“真”,反之返回的結(jié)果為“假”。邏輯學(xué)中使用真和假來表示邏輯判斷的結(jié)果,C#語言使用ture和false兩個值來表示邏輯判斷的真和假,這是C#語法。布爾型變量定義和使用方法如下:

      bool?? trbool=true;

      bool?? fsbool=false;

      bool??? mybool=x>y;

      到現(xiàn)在為止,我們介紹完了C#中所有值類型的數(shù)據(jù)類型。最后我們來看一下值類型的一個綜合示例:

      using System;

      namespace myText

      {

      Class Text

      {

      static void Main(string[] args)

      {

      int cx=10,cy=12,cr=0;

      cr=cx*cy;

      Console.WriteLine(“長方形的長是:{0},寬是:{1}”,cx,cy);

      Console.WriteLine(“長方形的面積是:{0}”,cr);

      double sx=12,sy=10.5;

      Console.WriteLine(“三角形的底是:{0},高是:{1}”,sx,sy);

      Console.WriteLine(“三角形的面積是:{0}”,sx*sy/2);

      char sx=’C’,sy=’N’;

      Console.WriteLine(“{0}{1}表示中國”,sx,sy);

      bool bh=cx>cy;

      Console.WriteLine(“{0}>{1}是{2}的”,cx,cy,bh);

      }

      }

      }

      運(yùn)行結(jié)果:

      長方形的長是:10,寬是:12

      長方形的面積是:120

      三角形的底是:12,高是:10.5

      三角形的面積是:63

      CN表示中國

      10>12是False的

      上面的程序我們使用了剛才介紹的大部分?jǐn)?shù)據(jù)類型。

      2.2.2 變量的命名

      變量在定義時涉及到數(shù)據(jù)類型和變量名兩個元素,數(shù)據(jù)類型是系統(tǒng)定義好的關(guān)鍵

      字,而變量名是可以自己定義的。這里著重說一下變量名的命名規(guī)則,變量名的命名主要有三條規(guī)則,變量名的構(gòu)成規(guī)則必須滿足下面條件:

      l????????變量名可以由字母 數(shù)字 _(下劃線)組合而成。

      l????????變量名必須以字母或_(下劃線)開頭。

      l????????C#語言中某些詞(如 int或 float等)稱為保留字,具有特殊意義,不能用作變量名。

      要注意的是,C#語言中變量名區(qū)分大小寫,因此變量age和Age是兩個不同的變

      量。實(shí)際上,C#程序中有許多需要命名的對象,例如變量名,方法名,類名等,為這些對象起一個名字來標(biāo)識這些對象,這些名字都稱作標(biāo)識符,變量名就是變量標(biāo)識符。C#語言規(guī)定同一種標(biāo)識符不能重名,在這里也就說變量名不能重名,這是變量定義時要注意的問題。至此,我們可以來演練一下變量的定義了:

      string? welcom=”歡迎進(jìn)入C#世界”;

      int age=20;

      double money=30000;

      char c=’A’;

      從上面的例子我們也可以看出,變量和數(shù)據(jù)類型有著密切的關(guān)系,我們說不同的變

      量代表著不同的內(nèi)存存儲空間,并且這塊存儲空間是固定大小的,這樣就決定了變量有一定的存儲范圍,如果變量的值超出這個范圍就會發(fā)生錯誤。而數(shù)據(jù)類型就決定了變量占用內(nèi)存的大小,因此數(shù)據(jù)類型對于變量來說非常重要。

      2.2.3 變量的聲明和賦值

      學(xué)完變量的命名規(guī)則后,變量的聲明和賦值是非常簡單的。變量在聲明的時候首先要知道所定義的變量是什么類型的,在去聲明你所定義的變量;變量的賦值——變量可以在聲明的時候賦值,也可以聲明后在下面用到該變量時對其進(jìn)行賦值。下面我們來看下變量的聲明和賦值的示例:

      int???? age=20;//在聲明變量時直接給變量賦值

      int??? age;

      age =20;//先聲明變量,在對變量進(jìn)行賦值

      總的來講,變量的聲明和賦值的語法是:

      數(shù)據(jù)類型????? 變量名;

      變量名=初始值;

      數(shù)據(jù)類型???? 變量名=初始值;

      2.3運(yùn)算符和表達(dá)式

      上一節(jié)我們學(xué)習(xí)了變量,那么變量和變量之間怎么聯(lián)系起來呢?今天我們來學(xué)習(xí)運(yùn)算符和表達(dá)式。

      在程序語言中,變量是字詞,通過運(yùn)算符將變量連接成表達(dá)式,表達(dá)式相當(dāng)于語言中的短句。運(yùn)算符最常見的就是加、減、乘、除,這些運(yùn)算符每一個小型的計(jì)算器都有。當(dāng)然程序語言支持的運(yùn)算符不止這些,每個程序語言提供的運(yùn)算符號稍有些不同,但大體上都一樣,在C#語言中主要有以下幾種運(yùn)算符:

      ★????算術(shù)運(yùn)算符

      ★????關(guān)系運(yùn)算符

      ★????邏輯運(yùn)算符

      ★????賦值運(yùn)算符

      運(yùn)算符操作數(shù)的個數(shù),又可分為一元運(yùn)算符和二元運(yùn)算符,一元運(yùn)算符連接一個操作數(shù),二元運(yùn)算符連接兩個操作數(shù),我們常見的加、減、乘、除都是二元運(yùn)算符,他們需要連接兩個操作數(shù)。

      運(yùn)算符連接操作數(shù)構(gòu)成表達(dá)式,操作數(shù)可以是變量和常數(shù)(單獨(dú)的一個數(shù)字或字符串等我們都可以稱作常數(shù))。許多小的表達(dá)式可以構(gòu)成大的表達(dá)式。如“(x+y)+(x-y)”中間的加號連接兩個小的表達(dá)式構(gòu)成一個復(fù)雜的表達(dá)式,此時這些小表達(dá)式我們也可以認(rèn)為是操作數(shù),也就是說操作數(shù)也可以是表達(dá)式。事實(shí)上C#中的表達(dá)式和小學(xué)數(shù)學(xué)中的算式有些相似。

      ★?? 2.3.1算術(shù)運(yùn)算符

      下面我們首先來介紹算術(shù)運(yùn)算符,算術(shù)運(yùn)算符是我們最常見的運(yùn)算符,如下圖所示:

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

      作?? 用

      示?? 例

      +

      加法操作

      1+2,x+y

      -

      減法操作

      2-1,x-y

      *

      乘法操作

      2*3,x*y

      /

      除法操作

      4、2,x/y

      %

      取余數(shù)操作

      7%2=1,23%10=3

      ++

      自增操作

      x++,++x

      --

      自減操作

      x--,--x

      算術(shù)運(yùn)算符用來連接操作數(shù)執(zhí)行算術(shù)運(yùn)算。其中前四種都很熟悉了。取余運(yùn)算又叫取模運(yùn)算,是用來取得余數(shù),比如我們要取得12除以5的余數(shù)可以使用“12%5”,結(jié)果是2.關(guān)于自增“++”和自減“--”運(yùn)算符的用法需要注意,我們可以用一種替代算法來解釋他們。如果“x++”或者“++x”單獨(dú)出現(xiàn)在一個語句中那么都相當(dāng)于“x=x+1”(注意:“x++”和“++x”在一定范圍下是有區(qū)別的),相對應(yīng)的自減也類似。

      關(guān)于算術(shù)操作符就介紹到這里,下面我們來看一個示例:

      usingSystem;

      usingSystem.Text;

      namespaceText

      {

      class program

      {

      static void Main(string[] args)

      {

      inta=5%2;

      doubleb=a+2*5/2.5;

      int x=5;

      inty=++x;

      intz=x++;

      Console.WriteLine(“a={0},b={1}”,a,b);

      Console.WriteLine(“x={0},y={1},z={2}”,x,y,z);

      }

      }

      }

      運(yùn)行結(jié)果:

      a=1,b=5

      x=7,y=6,z=6

      按F5鍵運(yùn)行后,運(yùn)行結(jié)果如上,這里重點(diǎn)要注意z和y的值。運(yùn)行結(jié)果中z和y都為6,你可以把上面的“++”符號換成“--”符號運(yùn)行,結(jié)果z和y都為4.有時我們也形象的稱自增或自減變量“參與表達(dá)式運(yùn)算”為“使用”,如果遞增運(yùn)算符在變量的前面,那么變量先自我遞增然后在“使用”,在這里的“使用”是指“x賦值給y”。如果自增運(yùn)算符在變量后面,那么變量先“使用”再自我遞增。即“++x”是“先運(yùn)算后賦值“,“x++”是“先賦值后運(yùn)算”。

      2.3.2關(guān)系運(yùn)算符

      事實(shí)上,關(guān)系運(yùn)算符就是我們在小學(xué)三年級學(xué)過的的那些大于 小于 等于等。C#中關(guān)系運(yùn)算符用于測試兩個數(shù)或者兩個表達(dá)式之間的關(guān)系。關(guān)系運(yùn)算符連接操作數(shù)構(gòu)成關(guān)系表達(dá)式,關(guān)系表達(dá)式的計(jì)算結(jié)果為邏輯值true和false,如果此關(guān)系式表達(dá)成立則返回true,否則返回false。C#中的關(guān)系表達(dá)式大都是我們所熟悉的,如下表所示:

      關(guān)系運(yùn)算符

      作?? 用

      示??? 例

      >

      大于

      3>2,x>y

      <

      小于

      2<3,y

      >=

      大于等于

      3>=3,x>=y

      <=

      小于等于

      2<=3,y<=x

      ==

      等于

      2==3,x==y

      !=

      不等于

      2!=3,x!=y

      關(guān)系表達(dá)式得到的結(jié)果是邏輯值“真”和“假”。我們在前面提到過,在C#中“真”和“假”使用布爾類型來表示,“真”用小寫true來表示,“假”用小寫false來表示,它們描述了表達(dá)式所表達(dá)的關(guān)系是否成立,如下所示:

      boolr=3>4;?? //關(guān)系不成立則r為false

      boolr=3>2;?? // 關(guān)系成立則r為true

      關(guān)系表達(dá)式也有一些很復(fù)雜的,比如“(a+b)>(a-b)”等復(fù)合表達(dá)式,關(guān)系表達(dá)式主要用在條件判斷語句中(如if語句等,我們后面將會介紹),表示如果某個條件成立就去執(zhí)行一個操作,如:

      using System;

      using System.Text;

      namespace Text

      {

      class Program

      {

      static void Main(string[] args)

      {

      int a=1,b=2;

      if(a

      {

      Console.WriteLine(“a小于b”);

      }

      }

      }

      }

      運(yùn)行結(jié)果:

      a小于b

      2.3.3邏輯運(yùn)算符

      邏輯運(yùn)算符通常連接關(guān)系表達(dá)式從而表示更復(fù)雜的關(guān)系。一般來說,邏輯運(yùn)算符通常使用在if語句中連接一個或多個條件構(gòu)成符合條件。要注意的是,邏輯運(yùn)算符連接成的表達(dá)式還是關(guān)系表達(dá)式,返回值的類型也是布爾型,下表是C#中用到的邏輯運(yùn)算符。

      邏輯運(yùn)算符

      作? 用

      描? 述

      &&

      邏輯“與”操作

      “并且”的意思

      ||

      邏輯“或”操作

      “或者”的意思

      邏輯“非”操作

      “不”或“非”的意思

      在日常生活中經(jīng)常出現(xiàn)復(fù)雜的條件選擇,不如下面這個例子:

      “假如我有錢或者我長得帥,那么我可以找個漂亮的女朋友。”

      這里的“我有錢”和“我長得帥”兩個條件之間的“或者”就相當(dāng)于使用了邏輯運(yùn)算符“||”,我們再舉一個C#中的例子:

      if(a>b?&&? a!=0)?? r=b/a;

      這個式子意思是:假如a大于b并且a不為零,那么求b除以a的結(jié)果。

      邏輯“非”相當(dāng)于“不”,會對原來的值取反,比如:

      “他不是個好人”就等效于“他!=好人”。

      “他不不是個好人”就等效于“他!!好人”。

      兩個“非”運(yùn)算符可以省略掉所以任何邏輯表達(dá)式不會同時出現(xiàn)兩個并列的“非”符號,那是很無聊的寫法。你可以簡單的將邏輯運(yùn)算符“&&”理解為“并且”,將 “||”理解為“或者”,“!”理解為“不”,這樣有助于你對代碼的理解。下表列舉了所有邏輯運(yùn)算符在各種各種運(yùn)算情況下的結(jié)果,仔細(xì)觀察會發(fā)現(xiàn)里面是有規(guī)律的:

      運(yùn)? 算

      結(jié)? 果

      運(yùn)? 算

      結(jié)? 果

      !true

      false

      false && false

      false

      !false

      true

      true || true

      true

      true && true

      true

      true || false

      true

      true && false

      false

      false || false

      false

      通過上面的表我們可以得出結(jié)論:

      ●????對于 && 操作,只有當(dāng)兩個條件都為true時結(jié)果才為true。

      ●????對于 || 操作,只要任何一個條件為true則結(jié)果為true。

      示例:

      using System;

      namespace Text

      {

      class Program

      {

      static void Main(string[] args)

      {

      floatprice1=27.3f; //第一種商品的價格

      floatprice2=57.0f; //第二種商品的價格

      int n1=2; //第一種商品的數(shù)量

      int n2=3; //第二種商品的數(shù)量

      floatdiscount=0.2f; //折扣

      //總消費(fèi)金額

      doubletotal=price1 * n1 + price2 * n2;

      //如果總消費(fèi)額大于200或者買的每種商品的價格都超過了100則打折

      if(total>200||(price1>100&& price2>100))

      {

      total=total*(1-discount);

      Console.WriteLine(“折后總消費(fèi)額為:{0}”,total);

      }

      else

      Console.WriteLine(“總消費(fèi)額為:{0}”,total);

      }

      }

      }

      運(yùn)行結(jié)果為:

      折后總消費(fèi)額為:180.4799

      上面的例子我們首先定義了兩個價格和兩個數(shù)量變量。價格變量定義成浮點(diǎn)型時因

      為價格很可能存在小數(shù),數(shù)量定義成整型是因?yàn)閿?shù)量只能時整數(shù)。然后我們使用算術(shù)表達(dá)式求出所有的購買商品的總額,并保存到total變量中,total變量采用double類型只是為了演示double的用法,實(shí)際上用float型也可以。最后我們使用if語句根據(jù)條件來執(zhí)行不同的代碼塊,假如if語句后面的括號中關(guān)系表達(dá)式返回true,則執(zhí)行折扣計(jì)算相關(guān)代碼,如果返回false則不計(jì)算折扣直接顯示消費(fèi)總額。

      下面來看一個綜合性的示例,猜猜它的運(yùn)行結(jié)果?

      class Person

      {

      static void Main()

      {

      char cSex='男'; //性別

      int iHeight=175; //身高

      float fWeight=65.55f; //體重,float型需要加f

      bool bIsMarriage=false; //婚否,取值:true(表示已婚);false(未婚)

      string sName; //字符串類型

      sName="張秋楓";

      System.Console.WriteLine("***************************");//"":字符串

      System.Console.WriteLine(cSex);

      System.Console.WriteLine(iHeight);

      System.Console.WriteLine(fWeight);

      System.Console.WriteLine(bIsMarriage);

      System.Console.WriteLine(sName);

      System.Console.WriteLine("********************************");

      }

      }

      2.3.4賦值運(yùn)算符

      賦值運(yùn)算符是給一個變量賦一個值,聽起來像廢話,實(shí)際上這個小小的賦值作用非

      常大,她會指示系統(tǒng)向變量對應(yīng)的內(nèi)存存入一個值。賦值運(yùn)算符就是我們前面見到的“x=2”表達(dá)式中間的那個等于號。這里要注意賦值符號和“等于”號的區(qū)別,賦值運(yùn)算符是一個“=”號,而兩個“==”號才是我們前面介紹的的關(guān)系運(yùn)算中表示相等關(guān)系的“等于”號。除了基本的賦值符號外,C#中還支持復(fù)合賦值運(yùn)算符號。下表中左邊一列是復(fù)合賦值運(yùn)算符,中間一列是示例,右邊一列是與左邊運(yùn)算符等效的運(yùn)算:

      賦值運(yùn)算符

      示? 例

      描? 述

      =

      x=2

      給x賦值2

      +=

      x+=2

      相當(dāng)于x=x+2

      -

      x-=2

      相當(dāng)于x=x-2

      /=

      x/=2

      相當(dāng)于x=x/2

      *=

      x*=2

      相當(dāng)于x=x*2

      %=

      x%=2

      相當(dāng)于x=%22

      表中那些復(fù)合賦值運(yùn)算符實(shí)際上就是后面描述部分的一個縮寫形式,只不過那種省略的寫法執(zhí)行效率比較高,這是從C語言繼承下來的特性,所以提倡使用前面的那種省略的寫法。賦值運(yùn)算符的計(jì)算執(zhí)行是從右往左進(jìn)行,比如我們常見的“x=x+2”,實(shí)際上是先計(jì)算了“x+2”然后再把這個結(jié)果給x,所以運(yùn)算結(jié)果后x會增加2,如果出現(xiàn)連寫的賦值運(yùn)算,則計(jì)算是從右往左逐個賦值,如:“x=y=a”,則結(jié)果x y都等于a,下面是一個經(jīng)典的交換兩個數(shù)的算法:

      int a=1,b=2;

      b=(a+b)-(a=b);

      一句話執(zhí)行完后a、b的值將互換,a變?yōu)?,b變?yōu)?。計(jì)算首先從右邊開始,先計(jì)算左邊括號里面的“a+b”,結(jié)果為3,然后計(jì)算右邊括號里面的值,右邊括號里面的值計(jì)算完后結(jié)果為2,同時a已經(jīng)等于了2。最后,左邊括號里面的結(jié)果3減去右邊括號里面的結(jié)果2得到結(jié)果1,這個1賦值給b,那么b就是1了,交換完畢。從上面的例子我們不難看出,系統(tǒng)運(yùn)算的每一步在內(nèi)存中都會暫存結(jié)果。上面的兩個括號的結(jié)果先計(jì)算完,然后再把這兩個結(jié)果進(jìn)行相減,最后將減的結(jié)果進(jìn)行賦值。

      C#示例:

      using System;

      namespace MyText

      {

      class Text

      {

      static void Main(string[]args)

      {

      int num=4567;

      int thousand,hundred,ten,indiv;

      thousand=num/1000;

      num%=1000;

      hundred=num/100;

      num%=100;

      ten=num/10;

      indiv=num%10;

      num=indiv * 1000+te n*100+hundred * 10+thousand;

      Console.WriteLine(“反轉(zhuǎn)后的數(shù)是:{0}”,num);

      }

      }

      }

      運(yùn)算結(jié)果:

      反轉(zhuǎn)后的數(shù)是:7654

      注意:賦值運(yùn)算右邊表達(dá)式的值必須和被賦值對象數(shù)據(jù)類型相同,如:

      int a=3.3f;

      float b=‘a(chǎn)’;

      上面的第一個表達(dá)式右邊是浮點(diǎn)型數(shù)字而左邊是整型的變量,這樣是不對的。同樣第二條語句右邊是字符,左邊是浮點(diǎn)型的變量,這樣賦值也是不合理的。如果賦值運(yùn)算兩邊是引用類型,那么類型也必須兼容。一般來說,你完全可以把變量當(dāng)作是一個特定的容器,比如裝番茄醬的瓶子,對此你不能將辣椒醬裝在里面,在進(jìn)行賦值操作時要特別注意這一點(diǎn)。當(dāng)然后面我們會介紹數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)知識,有了數(shù)據(jù)類型的轉(zhuǎn)換你就可以把辣椒醬裝到番茄醬瓶子里了,你就可以把浮點(diǎn)型賦值給整型了。

      2.3.5 運(yùn)算符的優(yōu)先級

      現(xiàn)在,你幾乎已經(jīng)了解所有的運(yùn)算符,是你大顯身手的時候了,那么你能計(jì)算下面的式子嗎: r=(2-1)* 3 + !2 – 5% 2 * 2? && 3;

      你如果沒有接觸過其他程序語言,相信你應(yīng)該傻眼兒了,這么多運(yùn)算符應(yīng)該先算哪個呢?我們在小學(xué)時就知道運(yùn)算符有優(yōu)先級,我們知道乘法和除法的優(yōu)先級高于減法運(yùn)算,而括號的優(yōu)先級最高,一個式子既有加減又有乘除還有括號,那么計(jì)算的順序是:括號里面的—>乘除-->加減,如“3*4+2/(5+2+1)”式子,結(jié)果是:“12.25”。我們知道C#中的運(yùn)算符遠(yuǎn)比數(shù)學(xué)中的運(yùn)算符多,而且這些運(yùn)算符都可以出現(xiàn)在同一個表達(dá)式中,那么我們的優(yōu)先級是怎樣的呢?

      C#中運(yùn)算符優(yōu)先級從高到低排列如下表所示:

      運(yùn)算符號

      結(jié)合性

      描述

      運(yùn)算符號

      結(jié)合性

      描述

      ()

      從左到右

      括號優(yōu)先級最高

      =,!=

      從左到右

      等號,不等號

      ++,--,!

      從右到左

      遞增,遞減,邏輯非運(yùn)算符

      &&

      從左到右

      邏輯 與

      *,/,%

      C#OOP之二 變量和表達(dá)式(cctv5體育節(jié)目表)

      從左到右

      乘,除,取模操作

      ||

      從左到右

      邏輯 或

      +,-

      從左到右

      加 減運(yùn)算

      =,+=,*=,/=,%=,-=

      從左到右

      賦值運(yùn)算符和復(fù)合賦值運(yùn)算符

      <,<=,>,>=

      從左到右

      小于 小于等于 大于 大于等于

      運(yùn)算符的結(jié)合性是指同時出現(xiàn)多個該運(yùn)算符時的計(jì)算方向。比如優(yōu)先級最高的括號,如果在一個表達(dá)式中出現(xiàn)多個括號,那么將從左向右依次計(jì)算這些括號里面的內(nèi)容。再比如大于小于號,如果幾個大于 小于號連接在一起,那么是從左到右進(jìn)行計(jì)算的。通常,能接兩個操作數(shù)的運(yùn)算符稱作二元運(yùn)算符,比如“+”號,接一個操作數(shù)的我們稱作一元運(yùn)算符,比如“!”和“++”等。從上面的優(yōu)先級例子可以看出,除了括號外,一元運(yùn)算符的優(yōu)先級最高。除此之外,從大的范圍來講算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符,關(guān)系運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,優(yōu)先級最低的是賦值運(yùn)算符。

      示例:

      using System;

      namespace Text

      {

      class Program

      {

      static void Main(string[] args)

      {

      int y=2002;

      if(y % 4 == 0 && y % 100!=0 ||y % 400== 0)

      Console.WriteLine(”{0}年是閏年”,y);

      else

      Console.WriteLine(”{0}年不是閏年”,y);

      }

      }

      }

      上面是一個求閏年的算法。假如某年能被400整除那么這年是閏年,如果某年不能被100整除并且能被4整除,那么這年也是閏年,也就是說這兩個條件滿足其中的一個就是閏年。上面的if語句中優(yōu)先級最高的運(yùn)算符是“%”號,所有的“%”計(jì)算完了再計(jì)算“==”號,然后計(jì)算“&&”號,最后計(jì)算“||”號,最終結(jié)果false,所以2002年不是閏年。這里注意的是,上面的式子不夠好,雖然實(shí)現(xiàn)了功能,但看起來令人頭暈,所以我們提倡多用括號,善于用括號,上面的式子應(yīng)改為:

      If((y % 4 == 0 && y % 100!=0) ||(y %400 == 0))

      很顯然加了括號的式子含義明了,代碼工整,直觀易懂。這屬于代碼規(guī)范的范疇。多種運(yùn)算符同時出現(xiàn)的地方不是什么算術(shù)表達(dá)式,而是像上面那樣的條件表達(dá)式中。計(jì)算運(yùn)算符的優(yōu)先級是件頭痛的事,加上括號后會使問題變得簡單化。

      另外,在上面使用運(yùn)算符號時你可能也注意到了一個問題,這個問題原不屬于運(yùn)算符的優(yōu)先級的問題,是關(guān)于長表達(dá)式跟數(shù)據(jù)類型有關(guān)的問題。問題是如果這個表達(dá)式中存在各種數(shù)據(jù)類型的數(shù)值怎么辦,如下面的式子:

      double r=1 + 1/2 + 2.0;

      上面式子中r的值為3而不是3.5。對于混合數(shù)據(jù)類型表達(dá)式的計(jì)算,結(jié)果按照最高精度為準(zhǔn),超過精度的一概被“切”掉,比如“1/2”結(jié)果是0,本來計(jì)算的結(jié)果是0.5,但大家都是整型所以結(jié)果是整型,小數(shù)點(diǎn)后數(shù)字都被“切”掉了。如果將“1/2”變成“1/2.0”,那么結(jié)果就是0.5,因?yàn)?.0是浮點(diǎn)型,所以結(jié)果也是浮點(diǎn)型。長表達(dá)式無非就是許多小表達(dá)式組合計(jì)算的結(jié)果,比如上面那個式子,首先計(jì)算“1/2”結(jié)果是0,然后計(jì)算“1+0+2.0”,結(jié)果是double類型的3.0。

      關(guān)于運(yùn)算符和表達(dá)式的內(nèi)容我們就介紹到這里,要特別注意的是:運(yùn)算符的優(yōu)先級以及混合數(shù)據(jù)類型表達(dá)式的計(jì)算問題。

      實(shí)踐問題:

      選擇題:

      1.????? 下列變量的聲明正確的是()

      A.int???1name;

      B.int????_name;

      C.int???? float;

      2.?? 下面

      問答題:

      1.????? 本章中學(xué)了幾種運(yùn)算符?他們的優(yōu)先級從高到低的順序是什么?

      小結(jié):

      在本章中,我們主要學(xué)習(xí)了:

      u??????C#的基本語法

      u??????變量的簡單類型

      u??????變量的命名規(guī)則

      u??????運(yùn)算符和表達(dá)式

      u??????運(yùn)算符的優(yōu)先級

      練習(xí)項(xiàng)目:

      學(xué)過變量和表達(dá)式,請大家發(fā)揮自己的想象,做一個和本章緊密相連的項(xiàng)目:

      需達(dá)到效果如下:

      在這個項(xiàng)目中,每種運(yùn)算符至少用一個說明你掌握了此類運(yùn)算符;運(yùn)算中要考慮運(yùn)算符的優(yōu)先級;聲明的變量類型要恰當(dāng)。

      C# 面向?qū)ο缶幊?/p>

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:wps表格怎么制作折線圖(wps表格做折線圖)
      下一篇:無代碼可視化編輯開發(fā)平臺(無代碼可視化編輯開發(fā)平臺下載)
      相關(guān)文章
      自怕偷自怕亚洲精品| 久久水蜜桃亚洲av无码精品麻豆| 国产亚洲AV夜间福利香蕉149| 亚洲风情亚Aⅴ在线发布| 亚洲中文字幕无码爆乳app| 亚洲一区二区三区四区视频| 久久丫精品国产亚洲av不卡 | 亚洲av手机在线观看| 亚洲成av人片在www鸭子| 亚洲av无码偷拍在线观看| 亚洲av日韩av永久无码电影| 亚洲精品欧美综合四区| 亚洲精品无码久久久久A片苍井空| 亚洲国产欧美国产综合一区 | 亚洲日本一区二区三区| 亚洲黄色片免费看| 亚洲毛片免费观看| 国产成人精品日本亚洲专| 久久乐国产综合亚洲精品| 亚洲乱色熟女一区二区三区蜜臀| 亚洲大码熟女在线观看| 国产av无码专区亚洲av毛片搜| 亚洲AV无码之日韩精品| 中文字幕不卡亚洲| 亚洲AV无码一区二区三区系列| 亚洲国产精品国自产拍AV| 青青草原精品国产亚洲av| 亚洲成a人片在线网站| 亚洲精品一二三区| 精品国产亚洲AV麻豆 | 亚洲精品久久久www| 亚洲中文字幕第一页在线| 久久精品亚洲综合一品| 亚洲第一二三四区| 亚洲色大成WWW亚洲女子| 一区国严二区亚洲三区| 亚洲人色婷婷成人网站在线观看| 亚洲国产精品久久久久久| 亚洲av无码一区二区三区天堂古代 | 亚洲av无码专区国产乱码在线观看| 亚洲精品综合一二三区在线|