<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          讀者問:C語言入門要掌握哪些基礎(chǔ)知識?

          共 5298字,需瀏覽 11分鐘

           ·

          2020-12-11 05:21


          關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容

          ID:技術(shù)讓夢想更偉大

          整理:李肖遙


          01
          C語言程序的結(jié)構(gòu)認(rèn)識


          用一個(gè)簡單的c程序例子,介紹c語言的基本構(gòu)成、格式、以及良好的書寫風(fēng)格,使小伙伴對c語言有個(gè)初步認(rèn)識。


          例1:計(jì)算兩個(gè)整數(shù)之和的c程序:

          #include?main()?
          {
          ?int?a,b,sum;?
          a=20;?/*定義變量a,b,sum為整型變量*/?
          b=15;?/*把整數(shù)20賦值給整型變量a*/?
          sum=a+b;?/*把整數(shù)15賦值給整型變量b*/?
          printf(“a=%d,b=%d,sum=%d\n”,a,b,sum);?/*把兩個(gè)數(shù)之和賦值給整型變量sum*/?
          }



          重點(diǎn)說明

          1、任何一個(gè)c語言程序都必須包括以下格式:main() { }——這是c語言的基本結(jié)構(gòu),任何一個(gè)程序都必須包含這個(gè)結(jié)構(gòu)。括號內(nèi)可以不寫任何內(nèi)容,那么該程序?qū)⒉粓?zhí)行任何結(jié)果。


          2、main()——在c語言中稱之為“主函數(shù)”,一個(gè)c程序有且僅有一個(gè)main函數(shù),任何一個(gè)c程序總是從main函數(shù)開始執(zhí)行,main函數(shù)后面的一對圓括號不能省略。


          3、被大括號{ }括起來的內(nèi)容稱為main函數(shù)的函數(shù)體,這部分內(nèi)容就是計(jì)算機(jī)要執(zhí)行的內(nèi)容。


          4、在{ }里面每一句話后面都有一個(gè)分號(;),在c語言中,我們把以一個(gè)分號結(jié)尾的一句話叫做一個(gè)c語言的語句,分號是語句結(jié)束的標(biāo)志。


          5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ——通過執(zhí)行這條c語言系統(tǒng)提供給我們直接使用的屏幕輸出函數(shù),用戶即可看到運(yùn)行結(jié)果,本程序運(yùn)行后,將在顯示器上顯示如下結(jié)果:a=20,b=15,sum=35。


          6、#include——注意:以#號開頭。不以分號結(jié)尾 這一行沒有分號,所以不是語句,在c語言中稱之為命令行,或者叫做“預(yù)編譯處理命令”。


          7、程序中以 /*開頭并且以*/結(jié)尾的部分表示程序的注釋部分,注釋可以添加在程序的任何位置,為了提高程序的可讀性而添加,但計(jì)算機(jī)在執(zhí)行主函數(shù)內(nèi)容時(shí)完全忽略注釋部分,換而言之就是計(jì)算機(jī)當(dāng)做注釋部分不存在于主函數(shù)中。



          02
          C程序的生成過程


          C程序是先由源文件經(jīng)編譯生成目標(biāo)文件,然后經(jīng)過連接生成可執(zhí)行文件。


          源程序的擴(kuò)展名為 .c ,目標(biāo)程序的擴(kuò)展名為 .obj , 可執(zhí)行程序的擴(kuò)展名為 .exe 。



          03
          標(biāo)識符


          在編寫程序時(shí),必須為函數(shù)、變量等命名,這個(gè)名字稱為標(biāo)識符。C語言中標(biāo)識符的命名規(guī)則如下:


          • 標(biāo)識符只能由字母、數(shù)字、下劃線組成;


          • 標(biāo)識符的第一個(gè)字母必須是字母和下劃線;


          • 標(biāo)識符區(qū)分大小寫字母,如If和if是兩個(gè)完全不同的標(biāo)識符。


          • 合法標(biāo)識符如下:A6, b_3 , _mn 非法的標(biāo)識符如下:ab#12 , 8m , tr3:4 , yes no


          標(biāo)識符不能與程序中具有特殊意義的關(guān)鍵字相同,不能與用戶編制的函數(shù)名、C語言庫函數(shù)相同,在程序中各種標(biāo)識符盡量不要重復(fù),以便區(qū)分。選擇變量名和其他標(biāo)識符時(shí),應(yīng)注意做到 “見名知義”。



          標(biāo)識符分為如下三類

          1、關(guān)鍵字

          關(guān)鍵字是具有特定含義的,專門用來說明c語言特定成分的一類標(biāo)識符,不能用作用戶的標(biāo)識符。


          2、預(yù)定義標(biāo)識符

          預(yù)定義標(biāo)識符在c語言中也有特定的含義,但可以用作用戶標(biāo)識符,預(yù)定義標(biāo)識符分為兩類:

          1)、庫函數(shù)名字,比如printf,scanf,sin,isdigit等?
          2)、編譯處理命令名,比如define,include


          3、用戶標(biāo)識符

          用戶根據(jù)需要自己定義的標(biāo)識符稱為用戶標(biāo)識符。無論如何自定義標(biāo)識符,都必須符合標(biāo)識符的三條命名規(guī)則。


          04
          ?常量


          在程序運(yùn)行中,其值不能被改變的量稱為常量。常量有5種類型:整型常量、實(shí)型常量、字符常量、字符串常量和符號常量。



          4.1 數(shù)值轉(zhuǎn)換

          數(shù)值的四種表現(xiàn)形式:


          • ①:二進(jìn)制:所有數(shù)字由0,1構(gòu)成,逢二進(jìn)一,二進(jìn)制數(shù)中不會出現(xiàn)2。


          • ②:八進(jìn)制:以數(shù)字0(注意不是以字母O,o)開頭,所有數(shù)字由0~7構(gòu)成,逢八進(jìn)一,八進(jìn)制數(shù)中不會出現(xiàn)8。例:0112,0123,077等


          • ③:十進(jìn)制:所有數(shù)字由0~9構(gòu)成,逢十進(jìn)一,十進(jìn)制數(shù)中不會出現(xiàn)10。例:0,12,-15等


          • ④:十六進(jìn)制:以0x或者0X(數(shù)字0加字母x)開頭,所有數(shù)字由0~9,A~F(或者a~f)構(gòu)成,逢十六進(jìn)一(其中A、B、C、D、E、F分別代表10、11、12、13、14、15) 例:0x4A、0X14c7等


          在計(jì)算機(jī)內(nèi)部,數(shù)字均以二進(jìn)制形式表示和存放,用戶輸入的普通十進(jìn)制數(shù)字都要被計(jì)算機(jī)轉(zhuǎn)換成二進(jìn)制才能在計(jì)算機(jī)內(nèi)部存儲,同樣計(jì)算機(jī)的運(yùn)算結(jié)果也為二進(jìn)制,一般要將其轉(zhuǎn)換成十進(jìn)制數(shù)再輸出給用戶閱讀,這種轉(zhuǎn)換通常由計(jì)算機(jī)自動實(shí)現(xiàn)。


          1)將十進(jìn)制轉(zhuǎn)換二進(jìn)制、八進(jìn)制和十六進(jìn)制

          除法:將十進(jìn)制數(shù)除以2,記錄余數(shù),得到的商繼續(xù)除以2,直到商為0,然后將各次相處所得的余數(shù)從后往前逆序排列,所得余數(shù)數(shù)字序列就是該十進(jìn)制數(shù)對應(yīng)的二進(jìn)制數(shù)。八進(jìn)制和十六進(jìn)制轉(zhuǎn)換方法同上。

          例:十進(jìn)制數(shù)13轉(zhuǎn)換成二進(jìn)制數(shù)的值為1101,轉(zhuǎn)換八進(jìn)制為015,轉(zhuǎn)換成十六進(jìn)制為D.


          2)將二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換成十進(jìn)制

          乘積求和:將二進(jìn)制的每一位從低位到高位(右邊為低位,左邊為高位)分別乘以20,21,22。。。。,然后將這些值求和。


          3)二進(jìn)制與八進(jìn)制、十六進(jìn)制數(shù)之間的相互轉(zhuǎn)換

          • ①:二進(jìn)制轉(zhuǎn)八進(jìn)制:從右往左每三位一組轉(zhuǎn)換成十進(jìn)制數(shù),將所得數(shù)據(jù)組合就是對應(yīng)的八進(jìn)制數(shù)(注意:高位不足三位補(bǔ)零)。例:(010 110 111)2=(267)8


          • ②:二進(jìn)制轉(zhuǎn)十六進(jìn)制:從右往左每四位一組轉(zhuǎn)換成十進(jìn)制數(shù),將所得數(shù)據(jù)組合就是對應(yīng)的十六進(jìn)制數(shù)(注意:高位不足四位補(bǔ)零)。例:(0101 1011)2=(5B)16


          • ③:八進(jìn)制轉(zhuǎn)化二進(jìn)制:每一位數(shù)字轉(zhuǎn)換為三位二進(jìn)制數(shù)字 例:(13)8=(001 011)2= (注意:去掉前面的兩個(gè)00,因?yàn)?在高位沒有意義) ④:十六進(jìn)制轉(zhuǎn)化二進(jìn)制:每一位數(shù)字轉(zhuǎn)換為四位二進(jìn)制數(shù)字 例:(E3)16=(1110 0011)2



          4.2 數(shù)形常量

          整型常量有3種形式:十進(jìn)制整型常量、八進(jìn)制整型常量和十六進(jìn)制整型常量。

          (注意:c語言中沒有直接表示二進(jìn)制的整型常量,在c語言源程序中不會出現(xiàn)二進(jìn)制。)


          書寫方式如下:

          十進(jìn)制整型常量:123 , 0 ,-24 , 85L(長整型常量) 等 八進(jìn)制整型常量:051 ,-026 ,0773 等 十六進(jìn)制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF。其中L為長整型。



          4.3 實(shí)型常量

          實(shí)型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。


          小數(shù)形式:5.4 0.074 -23.0 指數(shù)形式:5.4e0 4.3e-3 -3.3e4


          1)小數(shù)部分為0的實(shí)型常量,可以寫為453.0 或453。


          2)用小數(shù)表示時(shí),小數(shù)點(diǎn)的兩邊必須有數(shù),不能寫成“ .453“和“453.“,而應(yīng)該寫成“0.453“和“453.0“。


          3)用指數(shù)寫法時(shí),e前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)(注意:整數(shù)階碼可以是正數(shù),負(fù)數(shù),也可以是八進(jìn)制數(shù)、十六進(jìn)制數(shù),但必須為整數(shù))。



          4.4?字符常量

          字符常量的標(biāo)志是一對單引號‘ ’,c語言中的字符常量有兩類:


          1)由一對單引號括起來的一個(gè)字符,如‘a(chǎn) ’, ‘r’ ,‘#’。注意: ′a′ 和 ′A′ 是兩個(gè)不同的字符常量。


          2)由一對單引號括起來,以反斜杠\開頭,后跟若干數(shù)字或者字母,比如‘\n’,其中“\“是轉(zhuǎn)義的意思,后面跟不同的字符表示不同的意思,這類字符常量叫轉(zhuǎn)義字符。




          4.5?字符串常量

          C語言中,以雙引號括起來的,由若干個(gè)字符組成的序列即為字符串常量。

          例:“ni hao”?“happy”等等。



          4.6?符號常量

          符號常量是由宏定義“#define“定義的常量,在C程序中可用標(biāo)識符代表一個(gè)常量。


          例:計(jì)算圓的面積的c程序。


          #include?
          #define?PI?3.?main()?
          {
          float?r,s;?
          r=12.5;?
          S=PI?*r*r;
          ?printf(“s=?%f?”,s);
          ?}


          說明:

          #define 是宏定義,此程序中所有出現(xiàn)PI的地方都代表3.,同時(shí)PI稱為符號常量。習(xí)慣上我們用大寫字母來表示符號常量,小寫字母表示變量,這樣比較容易區(qū)別。



          05
          變量


          變量就是其值可以改變的量。變量要有變量名,在內(nèi)存中占據(jù)一定的存儲單元,存儲單元里存放的是該變量的值。不同類型的變量其存儲單元的大小不同,變量在使用前必須定義。



          5.1 整型變量

          整型變量分為4種:基本型(int)、短整型(short int 或short)、長整型(long int 或 long)和無符號型(unsigned int ,unsigned short,unsigned long)。


          不同的編譯系統(tǒng)對上述四種整型數(shù)據(jù)所占用的位數(shù)和數(shù)值范圍有不同的規(guī)定。


          類型說明符

          單詞signed來說明“有符號”(即有正負(fù)數(shù)之分),不寫signed也隱含說明為有符號,unsigned用來說明“無符號”(只表示正數(shù))。



          5.2 實(shí)型變量

          C語言中,實(shí)型變量分為單精度類型( float )和雙精度類型( double )兩種。


          如:float a , b ; double m ;


          在vc中,float 型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),double型數(shù)據(jù)占8個(gè)字節(jié)。單精度實(shí)數(shù)提供7位有效數(shù)字,雙精度實(shí)數(shù)提供15~16位有效數(shù)字。實(shí)型常量不分float型和double型,一個(gè)實(shí)型常量可以賦給一個(gè)float 型或double型變量,但變量根據(jù)其類型截取實(shí)型常量中相應(yīng)的有效數(shù)字。


          注意:實(shí)型變量只能存放實(shí)型值,不能用整型變量存放實(shí)型值,也不能用實(shí)型變量存放整型值。



          5.3?字符變量

          字符變量用來存放字符常量,定義形式:

          char 變量名;


          其中關(guān)鍵字char定義字符型數(shù)據(jù)類型,占用一個(gè)字節(jié)的存儲單元。


          例:char cr1,cr2; cr1= ‘A’ , cr2=‘B’ ;


          將一個(gè)字符賦給一個(gè)字符變量時(shí),并不是將該字符本身存儲到內(nèi)存中,而是將該字符對應(yīng)的ASCII碼存儲到內(nèi)存單元中。


          由于在內(nèi)存中字符以ASCII碼存放,它的存儲形式和整數(shù)的存儲形式類似,所以C語言中字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用,一個(gè)字符能用字符的形式輸出,也能用整數(shù)的形式輸出,字符數(shù)據(jù)也能進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對它們的ASCII碼進(jìn)行運(yùn)算。



          06
          類型的自動轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換


          當(dāng)同一表達(dá)式中各數(shù)據(jù)的類型不同時(shí),編譯程序會自動把它們轉(zhuǎn)變成同一類型后再進(jìn)行計(jì)算。轉(zhuǎn)換優(yōu)先級為:char < int < float < double 即左邊級別“低“的類型向右邊轉(zhuǎn)換。


          具體地說,若在表達(dá)式中優(yōu)先級最高的數(shù)據(jù)是double型,則此表達(dá)式中的其他數(shù)據(jù)均被轉(zhuǎn)換成double型,且計(jì)算結(jié)果也是double型;若在表達(dá)式中優(yōu)先級最高的數(shù)據(jù)是float型,則此表達(dá)式中的其他數(shù)據(jù)均被轉(zhuǎn)換成float型,且計(jì)算結(jié)果也是float型。


          在做賦值運(yùn)算時(shí),若賦值號左右兩邊的類型不同,則賦值號右邊的類型向左邊的類型轉(zhuǎn)換;當(dāng)右邊的類型高于左邊的類型時(shí),則在轉(zhuǎn)換時(shí)對右邊的數(shù)據(jù)進(jìn)行截取。


          除自動轉(zhuǎn)換外,還有強(qiáng)制轉(zhuǎn)換,表示形式是:( 類型 )(表達(dá)式);


          例:(int)(a+b)



          討論:當(dāng)a值賦值為3.4,b值賦值為2.7,(int)(a+b)和(int)a+b的值分別為多少?



          07
          C運(yùn)算符認(rèn)識

          C語言的運(yùn)算符范圍很廣,可分為以下幾類:


          • 1、算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(%)、自增(++)、自減(--)共七種。


          • 2、賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類共十一種。<="" span="">


          • 3、逗號運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。


          • 4、關(guān)系運(yùn)算符:用于比較運(yùn)算。包括大于(>)、小于(<)、等于(==)、 大于等于(="">=)、小于等于(<=)和不等于(!=)六種。<="" span="">


          • 5、邏輯運(yùn)算符:用于邏輯運(yùn)算。包括與(&&)、或(||)、非(!)三種。


          • 6、條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。


          • 7、位操作運(yùn)算符:參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。


          • 8、指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。


          • 9、求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。


          • 10、特殊運(yùn)算符:有括號(),下標(biāo)[],成員(→,.)等幾種。


          另外,按參與運(yùn)算的對象個(gè)數(shù),C語言運(yùn)算符可分為:單目運(yùn)算符 (如 !)、雙目運(yùn)算符 (如+,- )和三目運(yùn)算符 (如 ? :)。



          08
          算術(shù)運(yùn)算符和算術(shù)表達(dá)式


          8.1 基本的算數(shù)運(yùn)算符

          (1)+(加法運(yùn)算符或正值運(yùn)算符,如2+5)。


          (2)-(減法運(yùn)算符或負(fù)值運(yùn)算符,如4-2)。


          (3)*(乘法運(yùn)算符,如3*8)。


          (4)/(除法運(yùn)算符,如11/5)。


          /的運(yùn)算分為兩種情況:?


          ?a、“除”的左右兩邊都為整數(shù)時(shí),所得結(jié)果必然是整數(shù)(注意:僅取整數(shù)部分,不是四舍五入)比如:5/2的值為2,不是2.5,1/2的值為0。?


          b、“除”的左右兩邊至少有一個(gè)是實(shí)型數(shù)據(jù)(即小數(shù))時(shí),所得結(jié)果為實(shí)型數(shù)據(jù)。比如:5/2.0的值為2.5,7.0/2.0的值為3.5.



          (5)%(模運(yùn)算符或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如9%7的值為2)。


          需要說明的是:當(dāng)運(yùn)算對象為負(fù)數(shù)時(shí),所得結(jié)果隨編譯器不同而不同,在vc中,結(jié)果的符號與被除數(shù)相同,比如:13%-2值為1,而-15%2值為-1。



          8.2?算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性

          算術(shù)表達(dá)式是用算術(shù)運(yùn)算符和括號將運(yùn)算量(也稱操作數(shù))連接起來的、符合C語言語法規(guī)則的表達(dá)式。運(yùn)算對象包括函數(shù)、常量和變量等。


          在計(jì)算機(jī)語言中,算術(shù)表達(dá)式的求值規(guī)律與數(shù)學(xué)中的四則運(yùn)算的規(guī)律類似,其運(yùn)算規(guī)則和要求如下。


          • (1)在算術(shù)表達(dá)式中,可使用多層圓括號,但括號必須配對。運(yùn)算時(shí)從內(nèi)層圓括號開始,由內(nèi)向外依次計(jì)算各表達(dá)式的值。


          • (2)在算術(shù)表達(dá)式中,對于不同優(yōu)先級的運(yùn)算符,可按運(yùn)算符的優(yōu)先級由高到低進(jìn)行運(yùn)算,若表達(dá)式中運(yùn)算符的優(yōu)先級相同,則按運(yùn)算符的結(jié)合方向進(jìn)行運(yùn)算。


          • (3)如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)類型不同,則先利用自動轉(zhuǎn)換或強(qiáng)制類型轉(zhuǎn)換,使兩者具有相同類型,然后進(jìn)行運(yùn)算。



          8.3?自增自減運(yùn)算符

          作用:使變量的值增1或減1。


          如:++i,--i (在使用i之前,先使i的值加1、減1)。i++,i-- (在使用i之后,使i的值加1、減1)。


          (1)只有變量才能用自增運(yùn)算符 (++)和自減運(yùn)算符(--),而常量或表達(dá)式不能用,如10++或(x+y)++都是不合法的。


          (2)++和--的結(jié)合方向是“自右向左“,如 -i++ ,i的左邊是負(fù)號運(yùn)算符,右邊是自增運(yùn)算符,負(fù)號運(yùn)算和自增運(yùn)算都是 “自右向左“結(jié)合的,相當(dāng)于 -(i++)。


          在循環(huán)語句中常用到自增(減)運(yùn)算符,在指針中也常用到該運(yùn)算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的區(qū)別,特別弄清楚表達(dá)式的值和變量的值。



          09
          賦值運(yùn)算符與賦值表達(dá)式


          9.1 賦值運(yùn)算符與賦值表達(dá)式

          賦值符號 “=“就是賦值運(yùn)算符,作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量或?qū)⒁粋€(gè)變量的值賦給另一個(gè)變量,由賦值運(yùn)算符組成的表達(dá)式稱為賦值表達(dá)式。一般形式為:變量名 = 表達(dá)式。


          在程序中可以多次給一個(gè)變量賦值,每賦一次值,與它相應(yīng)的存儲單元中的數(shù)據(jù)就被更新一次,內(nèi)存中當(dāng)前的數(shù)據(jù)就是最后一次所賦值的那個(gè)數(shù)據(jù)。


          例:a=12;?此表達(dá)式讀作“將10的值賦值給變量a”。


          a、如果賦值號兩邊的運(yùn)算對象類型不一致,系統(tǒng)會自動進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換的規(guī)則:將賦值號右邊表達(dá)式的值的類型轉(zhuǎn)換成賦值號左邊變量的類型,


          例:int y=3.5;在變量y中最終存儲的是整數(shù)3。


          b、 可以將復(fù)制表達(dá)式的值再賦值給變量,形成連續(xù)賦值。

          例如:x=y=25 是一個(gè)連續(xù)賦值表達(dá)式,x=y=25 等價(jià)于x=(y=25),所以表達(dá)式x=y=25 最終的值為25 。



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

          在賦值運(yùn)算符之前加上其他運(yùn)算符可以構(gòu)成復(fù)合賦值運(yùn)算符。其中與算術(shù)運(yùn)算有關(guān)的復(fù)合運(yùn)算符是:+=,-=,*=,/=,%= 。


          兩個(gè)符號之間不可以有空格,復(fù)合賦值運(yùn)算符的優(yōu)先級與賦值運(yùn)算符的相同。表達(dá)式n+=1等價(jià)于n=n+1,作用是取變量n中的值增1再賦給變量n,其他復(fù)合的賦值運(yùn)算符的運(yùn)算規(guī)則依次類推。


          如求表達(dá)a+=a-=a*a 的值,其中a的初值為12 。


          步驟:

          先進(jìn)行“a-=a*a“運(yùn)算,相當(dāng)于a=a-a*a=12-144=-132 。(2)再進(jìn)行“a+=-132“運(yùn)算,相當(dāng)于 a=a+(-132)==-264 。



          9.3?逗號運(yùn)算符和逗號表達(dá)式

          在c語言中,逗號除了作為分隔符,還可以用作一種運(yùn)算符----逗號運(yùn)算符,用逗號運(yùn)算符將幾個(gè)表達(dá)式連接起來,例如a=b+c,a=b*c等稱為逗號表達(dá)式。


          一般形式為:

          表達(dá)式1 ,表達(dá)式2 ,表達(dá)式3 , …,表達(dá)式n

          例:x=2,y=3,z=4


          逗號表達(dá)式具有從左至右的結(jié)合性,即先求解表達(dá)式1,然后依次求解表達(dá)式2,直到表達(dá)式n的值。表達(dá)式n的值就是整個(gè)逗號表達(dá)式的值。上述的逗號表達(dá)式的值就是表達(dá)式z=4的值4.需要注意的是,逗號運(yùn)算符是所有運(yùn)算符中級別最低的。


          例:有如下程序段:

          main()?

          {

          int?a=2,b=4,c=6,x,y;

          y=(x=a+b),(b+c);?

          printf("y=%d,x=%d",y,x);

          ?}

          程序顯示結(jié)果為:y=6,x=6


          討論:將y=(x=a+b),(b+c);改為y=((x=a+b),b+c) 的程序結(jié)果?



          10
          關(guān)系運(yùn)算符和關(guān)系表達(dá)式


          10.1 C語言中的邏輯值

          C語言中的邏輯值只有兩個(gè):真(true)和假(flase)。用非零代表真,用零代表假。因此,對于任意一個(gè)表達(dá)式,如果它的值為零,就代表一個(gè)假值,如果它的值為非零,就代表一個(gè)真值。只要值不是零,不管是正數(shù),負(fù)數(shù),整數(shù),實(shí)數(shù),都代表一個(gè)真值。例如-5的邏輯值為真。


          10.2?逗號運(yùn)算符和逗號表達(dá)式

          “&&”和“||”的運(yùn)算對象有兩個(gè),故它們都是雙目運(yùn)算符,而!的運(yùn)算對象只有一個(gè),因此它是單目運(yùn)算符。邏輯運(yùn)算舉例如下:


          (1)a&&b: 當(dāng)&&兩邊都為“真”時(shí),表達(dá)式a&&b的值才是真。

          值得注意的是:在數(shù)學(xué)中,關(guān)系式0


          (2)a||b: 當(dāng)||兩邊有一個(gè)為“真”時(shí),表達(dá)式a||b的值就是真。


          (3)!a: 表示取反,如果a為真,則!A為假,反之亦然。例如!-5的值就為0。


          在C語言中,由&&或||組成的邏輯表達(dá)式,在某些特定情況下會產(chǎn)生“短路“現(xiàn)象。


          (1)x && y && z ,只有當(dāng)x為真(非0)時(shí),才需要判別y的值;只有x和y都為真時(shí),才需要去判別z的值;只要x為假就不必判別y和z,整個(gè)表達(dá)式的值為0??谠E:“一假必假”。

          例:

          (!5==1)&&(++i==0)?(!5==1)表達(dá)式的值為0,所以計(jì)算機(jī)運(yùn)行中就跳過(++i==0)此表達(dá)式,(!5==1)&&(++i==0)表達(dá)式的值為0。


          (2)x||y||z ,只要x的值為真(非零),就不必判別y和z的值 ,整個(gè)表達(dá)式的值為1,只有x的值為假,才需要判別y的值,只有x和y的值同時(shí)為假才需要判別z的值,口訣:“一真必真”。



          11
          位運(yùn)算

          11.1 位運(yùn)算符

          在計(jì)算機(jī)中,數(shù)據(jù)都是以二進(jìn)制數(shù)形式存放的,位運(yùn)算就是指對存儲單元中二進(jìn)制位的運(yùn)算。C語言提供6種位運(yùn)算符。


          11.2?位運(yùn)算

          位運(yùn)算符 & |~<< >> ∧ 按優(yōu)先級從高到低排列的順序是:


          位運(yùn)算符中求反運(yùn)算“~“優(yōu)先級最高,而左移和右移相同,居于第二,接下來的順序是按位與 “&“、按位異或 “∧“和按位或 “|“。順序?yàn)閪 << >> & ∧ | 。


          例1:左移運(yùn)算符“<<”是雙目運(yùn)算符。其功能把“<< ”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補(bǔ)0。="" <="" span="">

          例如:a<<4 指把a(bǔ)的各二進(jìn)位向左移動4位。如a=00000011(十進(jìn)制3),左移4位后為00(十進(jìn)制48)。


          例2:右移運(yùn)算符“>>”是雙目運(yùn)算符。其功能是把“>> ”左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,“>>”右邊的數(shù)指定移動的位數(shù)。

          例如:設(shè) a=15, a>>2 表示把右移為十進(jìn)制3)。


          應(yīng)該說明的是,對于有符號數(shù),在右移時(shí),符號位將隨同移動。當(dāng)為正數(shù)時(shí),最高位補(bǔ)0,而為負(fù)數(shù)時(shí),符號位為1,最高位是補(bǔ)0或是補(bǔ)1 取決于編譯系統(tǒng)的規(guī)定。


          例3:設(shè)二進(jìn)制數(shù)a是00 ,若通過異或運(yùn)算a∧b 使a的高4位取反,低4位不變,則二進(jìn)制數(shù)b是。


          解析:異或運(yùn)算常用來使特定位翻轉(zhuǎn),只要使需翻轉(zhuǎn)的位與1進(jìn)行異或操作就可以了,因?yàn)樵瓟?shù)中值為1的位與1進(jìn)行異或運(yùn)算得0 ,原數(shù)中值為0的位與1進(jìn)行異或運(yùn)算結(jié)果得1。而與0進(jìn)行異或的位將保持原值。異或運(yùn)算還可用來交換兩個(gè)值,不用臨時(shí)變量。


          C語言在全世界普及推廣,無論在中國還是世界各國,C語言都是高等學(xué)校一門基本的計(jì)算機(jī)課程,C語言也在計(jì)算機(jī)領(lǐng)域發(fā)揮重要的作用。


          掃描下方微信,加作者微信進(jìn)技術(shù)交流群,請先自我介紹喔。


          推薦閱讀:


          嵌入式編程專輯
          Linux 學(xué)習(xí)專輯
          C/C++編程專輯
          Qt進(jìn)階學(xué)習(xí)專輯
          關(guān)注微信公眾號『技術(shù)讓夢想更偉大』,后臺回復(fù)“m”查看更多內(nèi)容。

          長按前往圖中包含的公眾號關(guān)注

          瀏覽 9
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国内精品久久久久久久久久 | 欧美日韩一级电影 | 操逼二区国产 | 操死我视频 | 国产日韩AV一区二区 |