版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語言程序設(shè)計(jì)智能工程學(xué)院“現(xiàn)場(chǎng)課程”
目
錄目錄CONTENTS
C程序組成元素2.1
運(yùn)算符和表達(dá)式2.4
常量2.2
變量2.3
數(shù)據(jù)類型轉(zhuǎn)換2.5下面我們首先來看一個(gè)簡(jiǎn)單的C程序:#include<stdio.h> /*編譯預(yù)處理指令*/intmain() /*主函數(shù)的函數(shù)頭*/{ /*函數(shù)體的開始標(biāo)記*/ inta,b,c; /*定義3個(gè)整型變量*/ scanf("%d%d",&a,&b); /*運(yùn)行程序時(shí),分別為a,b輸入整數(shù)值*/ c=a+b; /*計(jì)算a+b的值,將結(jié)果賦值給c*/ printf("a=%d,b=%d,c=%d\n",a,b,c); /*依次輸出a,b,c的值*/ return0; /*程序返回值0*/} /*函數(shù)的結(jié)束標(biāo)記*/由該程序可以看出,C程序中主要包括了關(guān)鍵字、變量、常量、運(yùn)算符、標(biāo)識(shí)符、分隔符、其他符號(hào)等。下面我們就來介紹一下這些元素及其特點(diǎn)。關(guān)鍵字變量常量運(yùn)算符
2.1
C程序組成元素2.1.1C語言程序的格式特點(diǎn)標(biāo)識(shí)符C語言中規(guī)定具有特別意義的字符串稱為關(guān)鍵字,亦稱保留字,關(guān)鍵字不能用作它用。C語言的關(guān)鍵字共有37個(gè),如表所示。chardoubleenumfloatintlongshortsignedstructunionunsignedvoidfordowhilebreakcontinueifelsegotoswitchcasedefaultreturnautoexternregisterstaticconstsizeoftypedefvolatileinlinerestrict_Bool_Complex_Imaginary
2.1
C程序組成元素2.1.2關(guān)鍵字總體而言,C語言中的關(guān)鍵字大致可以分為以下幾類:數(shù)據(jù)類型說明符,如整型int,字符型char等。語句定義符,如選擇結(jié)構(gòu)中的if、else,循環(huán)結(jié)構(gòu)中的for、while、do等。存儲(chǔ)類型關(guān)鍵字,如聲明自動(dòng)變量的auto,聲明靜態(tài)變量的static等。其他關(guān)鍵字,如聲明常量的const等。
2.1
C程序組成元素12342.1.2關(guān)鍵字所謂變量,是指程序運(yùn)行過程中其值可以改變的量,如上例中的a,b,c。所謂常量,是指程序運(yùn)行過程中其值不變的量,如上例中的0。我們?cè)诒菊律院髸?huì)對(duì)C語言中的常量和變量進(jìn)行更為詳細(xì)的解釋。
2.1
C程序組成元素2.1.3變量與常量所謂標(biāo)識(shí)符,指的是編程人員在編寫程序時(shí)自己規(guī)定的具有特定含義的詞,用來標(biāo)明設(shè)定的變量名、數(shù)組名、函數(shù)名等。在C語言中,標(biāo)識(shí)符應(yīng)遵循以下一些命名規(guī)則。標(biāo)識(shí)符只能由字母、下劃線、數(shù)字組成,且第一個(gè)字符必須是字母或下劃線,不能是數(shù)字。如abc,_abc1,str_2都是合法的標(biāo)識(shí)符,但2abc,2_abc,&123,%lsso,M.Jack,-L2都是錯(cuò)誤的標(biāo)識(shí)符。標(biāo)識(shí)符區(qū)分英文字母大小寫,如score和Score是兩個(gè)不同的標(biāo)識(shí)符。標(biāo)識(shí)符不能是C語言中的關(guān)鍵字。
2.1
C程序組成元素2.1.4標(biāo)識(shí)符123
提示1.雖然從語言標(biāo)準(zhǔn)來說,C語言并未對(duì)標(biāo)識(shí)符的長(zhǎng)度作出限制,但在實(shí)際使用中,其長(zhǎng)度會(huì)受到具體編譯系統(tǒng)和機(jī)器環(huán)境的制約。比如,某些編譯器規(guī)定標(biāo)識(shí)符的前8個(gè)字符為有效區(qū)分部分,若兩個(gè)標(biāo)識(shí)符的前8個(gè)字符完全相同,會(huì)被視作同一個(gè)標(biāo)識(shí)符。2.在命名標(biāo)識(shí)符時(shí),應(yīng)盡量讓其名稱能夠體現(xiàn)出所代表的含義,做到“見名知義”。這樣可以顯著提升程序的可讀性,例如表示學(xué)生姓名的變量,可命名為StuName。3.在C程序的標(biāo)識(shí)符中,只能使用英文字母(包括大寫和小寫)、數(shù)字以及下劃線(_)。需要注意的是,像!、#、&等其他英文特殊符號(hào)是不允許用于標(biāo)識(shí)符的。不過,在程序的注釋以及字符串常量中,則可以使用包括漢字和中文標(biāo)點(diǎn)在內(nèi)的任意字符。
2.1
C程序組成元素2.1.4標(biāo)識(shí)符在C語言中,為了指明每個(gè)變量、函數(shù)可存儲(chǔ)什么類型的數(shù)據(jù),以及可以進(jìn)行哪些運(yùn)算或操作,系統(tǒng)提供了多種數(shù)據(jù)類型。數(shù)據(jù)類型不同,其在內(nèi)存中占用的存儲(chǔ)空間大小也有所不同。在C語言中,數(shù)據(jù)類型可分為四類,它們分別是基本類型、構(gòu)造類型、指針類型和空類型,如圖所示。其中,基本類型又可細(xì)分為整型、實(shí)型、字符型和枚舉型;構(gòu)造類型包括數(shù)組類型、結(jié)構(gòu)體類型和共用體類型。在本章中,我們將主要介紹C語言的基本類型,對(duì)于其他數(shù)據(jù)類型,將在后面各章陸續(xù)介紹。
2.1
C程序組成元素2.1.5數(shù)據(jù)類型
知識(shí)拓展
2.1
C程序組成元素整型常量即整常數(shù),C語言中整型數(shù)據(jù)可以有以下三種表示形式:十進(jìn)制整數(shù),由數(shù)字0-9組成,不能以0開頭(數(shù)字0本身除外)。示例:0、123、-456、10086。八進(jìn)制整數(shù)。以數(shù)字0開頭,后面跟由0-7組成的數(shù)字序列。示例:012(對(duì)應(yīng)十進(jìn)制的10)、077(對(duì)應(yīng)十進(jìn)制的63)、-010(對(duì)應(yīng)十進(jìn)制的-8)。十六進(jìn)制整數(shù)。以0x或0X開頭,后面跟由0-9、A-F(或a-f)組成的數(shù)字序列(A-F表示10-15)。示例:0x1A(對(duì)應(yīng)十進(jìn)制的26)、0Xff(對(duì)應(yīng)十進(jìn)制的255)、-0x20(對(duì)應(yīng)十進(jìn)制的-32)。
提示這三種形式在程序中可以根據(jù)需求靈活使用,編譯器會(huì)自動(dòng)將它們轉(zhuǎn)換為二進(jìn)制形式存儲(chǔ)。例如,10(十進(jìn)制)、012(八進(jìn)制)、0xa(十六進(jìn)制)在內(nèi)存中都表示同一個(gè)整數(shù)(十進(jìn)制值為10)。
2.2
常
量2.2.1整型常量123實(shí)型數(shù)據(jù)指帶小數(shù)的數(shù)值(實(shí)數(shù)),又稱浮點(diǎn)數(shù)(因小數(shù)點(diǎn)是“浮動(dòng)的”而得名)。C語言中實(shí)型常量只用十進(jìn)制形式表示,但其表示方式也有兩種:小數(shù)形式。由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成,必須包含小數(shù)點(diǎn)??梢灾挥姓麛?shù)部分和小數(shù)點(diǎn)(此時(shí)小數(shù)部分默認(rèn)為0),如3.、-100.,可以只有小數(shù)點(diǎn)和小數(shù)部分(此時(shí)整數(shù)部分默認(rèn)為0),如.5、-.89,也可以同時(shí)包含整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分,如3.14、-0.618。指數(shù)形式,由十進(jìn)制數(shù)、指數(shù)符號(hào)e或E以及指數(shù)部分組成,格式為:aEn(表示a×10?)。其中a是小數(shù)形式的實(shí)數(shù)(可以帶正負(fù)號(hào)),n是十進(jìn)制整數(shù)(可正可負(fù))。示例:1.23e5(表示1.23×10?,即123000)、3.14E-2(表示3.14×10?2,即0.0314)、-5e3(表示-5×103,即-5000)。
注意:指數(shù)形式中,e或E前后必須有數(shù)字,且指數(shù)部分必須是整數(shù)。例如e3、5e、3.2e1.5都是不
合法的表示。
2.2
常
量2.2.2實(shí)型常量12字符型常量包括字符常量、字符串常量和轉(zhuǎn)義字符。字符常量1C語言中字符常量必須用單撇號(hào)(單引號(hào))括起來,且單撇號(hào)中只能是單個(gè)字符。如'A'、'a'、'3'、'*'是正確的,'cd'、’12’、’!@’是錯(cuò)誤的。字符型數(shù)據(jù)在C語言中是以ASCII碼形式存儲(chǔ)的,字符常量的值就是其對(duì)應(yīng)的ASCII碼的值。如字符'a'的ASCII碼值為97,'A'的ASCII碼值為65。因?yàn)锳SCII碼值為整型,所以C語言中字符型數(shù)據(jù)與整型數(shù)據(jù)可以互用,例如,'a'-32相當(dāng)于97-32,等于65,對(duì)應(yīng)的字符為'A';同理,'A'+32為字符'a'。這也是字母大小寫轉(zhuǎn)換的一種方法。
提示字符'8'和整數(shù)8是不同的概念,字符'8'只是代表一個(gè)符號(hào),在內(nèi)存中以ASCII碼形式存儲(chǔ),對(duì)應(yīng)的ASCII碼值為56,而整數(shù)8在內(nèi)存中存儲(chǔ)的就是數(shù)值8。
2.2
常
量2.2.3字符常量字符串常量2除單個(gè)字符外,C語言還可以處理多個(gè)字符組成的常量,稱為字符串常量。字符串常量是一對(duì)雙撇號(hào)(雙引號(hào))括起來的一個(gè)或多個(gè)字符,例如,"A","China","Howareyou!"等。C語言中存儲(chǔ)字符串常量時(shí),系統(tǒng)會(huì)在字符串的末尾自動(dòng)加一個(gè)'\0'作為字符串的結(jié)束標(biāo)志。例如,字符串常量"China"在內(nèi)存中的存儲(chǔ)形式如圖所示。
提示字符串常量不能被修改(存放在常量區(qū)),例如不能直接給"hello"中的字符賦值。連續(xù)的字符串常量會(huì)被自動(dòng)拼接,例如"ab""cd"等價(jià)于"abcd"??兆址?"僅包含結(jié)束符'\0',占1字節(jié)內(nèi)存。
2.2
常
量2.2.3字符常量轉(zhuǎn)義字符3C語言中還有一類特殊字符,無法直接輸入或有特殊含義的字符,需用轉(zhuǎn)義字符表示(以反斜杠開頭)稱為轉(zhuǎn)義字符。轉(zhuǎn)義字符通常用來表示一些控制代碼和功能定義,例如,例1-1中的語句“printf("歡迎您學(xué)習(xí)C語言!\n");”中,“\n”表示換行。C語言中常用的轉(zhuǎn)義字符如表所示。轉(zhuǎn)義字符說明轉(zhuǎn)義字符說明\n回車換行\(zhòng)'單引號(hào)符'\b退格\"雙引號(hào)符"\r回車\a鳴鈴\t水平制表\f走紙換頁\v垂直制表\ddd1~3位八進(jìn)制數(shù)所代表的字符\\反斜線符\\xhh1~2位十六進(jìn)制數(shù)所代表的字符實(shí)際上,任何一個(gè)字符都可以用轉(zhuǎn)義字符\ddd或\xhh來表示,ddd和hh分別為八進(jìn)制和十六進(jìn)制的ASCII碼,例如,'\101'表示字母'A','\134'表示右斜杠,'\X0A'表示換行等。
2.2
常
量2.2.3字符常量符號(hào)常量,即以一個(gè)標(biāo)識(shí)符來代表某一個(gè)字面常量,它通常利用C語言的宏定義命令#define來聲明,格式為:#define標(biāo)識(shí)符
常量值。其中:#define是預(yù)處理命令(不是語句,末尾不需要分號(hào));標(biāo)識(shí)符是符號(hào)常量的名稱,通常使用大寫字母(約定俗成,便于區(qū)分);常量值可以是整數(shù)、實(shí)數(shù)、字符、字符串等;示例:特點(diǎn)與作用:①替代作用,編譯預(yù)處理階段,編譯器會(huì)將代碼中所有出現(xiàn)的符號(hào)常量標(biāo)識(shí)符替換為對(duì)應(yīng)的常量值(宏替換);②提高可讀性,用有意義的標(biāo)識(shí)符(如PI、MAX_AGE)代替直接寫數(shù)值,使代碼更易理解;③便于修改,當(dāng)需要修改常量值時(shí),只需修改#define定義處,無需逐個(gè)修改代碼中所有出現(xiàn)該值的地方。注意事項(xiàng):①符號(hào)常量定義后不能被修改,也不能對(duì)其賦值(如PI=3.14;是錯(cuò)誤的);②定義時(shí)標(biāo)識(shí)符與常量值之間是空格,不是等號(hào);③通常在程序開頭定義符號(hào)常量,以便整個(gè)程序都能使用。
2.2
常
量2.2.3符號(hào)常量【例2-1】已知圓的半徑,求圓的周長(zhǎng)和面積?!締栴}分析】在本例中,可以使用符號(hào)常量來表示圓周率,在運(yùn)行時(shí)先顯示文字,提示用戶輸入圓的半徑值。用戶輸入值后,經(jīng)過計(jì)算就可以得到圓的周長(zhǎng)和面積,最后將計(jì)算結(jié)果顯示出來。
2.2
常
量2.2.3符號(hào)常量【參考代碼】#include<stdio.h>#definePI3.14159 /*使用符號(hào)常量表示圓周率*/intmain(){ doubler,l,s; /*定義雙精度型變量半徑r,周長(zhǎng)l和面積s*/ printf("請(qǐng)輸入圓的半徑:"); /*輸出提示語*/ scanf("%lf",&r); /*輸入半徑r的值*/ l=2*PI*r; /*計(jì)算周長(zhǎng)l*/ s=PI*r*r; /*計(jì)算面積s*/ printf("圓的周長(zhǎng)為%f,圓的面積為%f\n",l,s); /*輸出周長(zhǎng)l和面積s*/ return0; /*程序返回值0*/}
2.2
常
量2.2.3符號(hào)常量【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示?!境绦蛘f明】用格式輸入函數(shù)scanf輸入雙精度型數(shù)據(jù)時(shí),輸入格式為%lf;用格式輸出函數(shù)printf輸出雙精度型數(shù)據(jù)時(shí),輸出格式為%f,關(guān)于格式輸入輸出函數(shù)將在第后續(xù)章節(jié)中詳細(xì)介紹。
2.2
常
量2.2.3符號(hào)常量變量的定義:變量在使用前必須先定義,變量定義的過程其實(shí)是為變量在內(nèi)存中開辟儲(chǔ)存單元的過程。變量定義的基本格式為:數(shù)據(jù)類型
變量名;數(shù)據(jù)類型決定變量存儲(chǔ)的數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、字符等),例如int、float、char等。變量名遵循標(biāo)識(shí)符命名規(guī)則(由字母、數(shù)字、下劃線組成,不能以數(shù)字開頭,不能是關(guān)鍵字)。示例:intage;//定義一個(gè)整型變量agefloatscore;//定義一個(gè)單精度浮點(diǎn)型變量scorechargender;//定義一個(gè)字符型變量gender也可以在定義時(shí)同時(shí)初始化(賦值):intnum=10;//定義整型變量num并初始化為10floatpi=3.14f;//定義浮點(diǎn)型變量pi并初始化為3.14charch='A';//定義字符變量ch并初始化為'A'變量的本質(zhì):變量本質(zhì)上是內(nèi)存中的一塊存儲(chǔ)空間,用于存放數(shù)據(jù):定義變量時(shí),編譯器會(huì)根據(jù)數(shù)據(jù)類型分配相應(yīng)大小的內(nèi)存(例如int通常占4字節(jié),char占1字節(jié))。變量名相當(dāng)于這塊內(nèi)存空間的“別名”,通過變量名可以訪問或修改內(nèi)存中的數(shù)據(jù)。變量的使用規(guī)則:先定義后使用:C語言要求變量必須先定義,后使用,否則會(huì)報(bào)錯(cuò)。
錯(cuò)誤示例:使用未定義的變量intmain(){x=5;//錯(cuò)誤,x未定義return0;}
2.3
變量整型變量是用來存儲(chǔ)整數(shù)的變量。整型可分為兩大類:有符號(hào)型和無符號(hào)型。有符號(hào)整數(shù)指的是數(shù)值可以帶正負(fù)號(hào),所以需要一個(gè)符號(hào)位;無符號(hào)整數(shù)指的是數(shù)值只有正數(shù),所以可以去掉符號(hào)位。默認(rèn)情況下,C語言中的整型變量都是有符號(hào)的,若要告訴編譯器變量是無符號(hào)整數(shù),需要把它聲明成無符號(hào)類型(用關(guān)鍵字unsigned表示)。
拓展閱讀我們知道,數(shù)據(jù)是以二進(jìn)制形式存儲(chǔ)在計(jì)算機(jī)中的。整數(shù)在存儲(chǔ)單元中的存儲(chǔ)方式是以補(bǔ)碼形式存放的。一個(gè)正數(shù)的補(bǔ)碼是此數(shù)的二進(jìn)制形式,一個(gè)負(fù)數(shù)的補(bǔ)碼是由該數(shù)絕對(duì)數(shù)的二進(jìn)制數(shù)按位取反后加1得到。
2.3
變量2.3.1整型變量為了適應(yīng)不同的應(yīng)用場(chǎng)合,C語言提供了多種整數(shù)類型,其長(zhǎng)度各不相同。其中,常用的有符號(hào)整型(用關(guān)鍵字int表示)長(zhǎng)度為32位(4個(gè)字節(jié))。此外,考慮到有些程序所需的數(shù)很大,C語言為此提供了長(zhǎng)整型(用關(guān)鍵字long表示);如果程序中整數(shù)的值都不大,為了節(jié)省空間,可使用C語言提供的短整型(用關(guān)鍵字short表示)。
提示不同的編譯器,分配給整型變量的存儲(chǔ)空間的大小是不一樣的。如TurboC2.0為每個(gè)整型數(shù)據(jù)分配2個(gè)字節(jié)(16位),而VisualC++6.0為每個(gè)整型數(shù)據(jù)分配4個(gè)字節(jié)(32位)。在本書中,我們采用VisualC++6.0編譯器中的規(guī)定。
2.3
變量2.3.1整型變量編寫程序時(shí),可以指明變量是長(zhǎng)整型或短整型,有符號(hào)整型或無符號(hào)整型,還可以把說明符組合起來。因此,整型變量可以分為有符號(hào)基本整型、無符號(hào)基本整型、有符號(hào)短整型、無符號(hào)短整型、有符號(hào)長(zhǎng)整型和無符號(hào)長(zhǎng)整型這6種類型。具體的關(guān)鍵字表示和各類型的取值范圍如表所示。類型名稱關(guān)鍵字表示字節(jié)數(shù)最小值最大值有符號(hào)基本整型[signed]int4-2147483648(-231)2147483647(231-1)無符號(hào)基本整型unsigned[int]404294967295(232-1)有符號(hào)短整型[signed]short[int]2-32768(-215)32767(215-1)無符號(hào)短整型unsignedshort[int]2065535(216-1)有符號(hào)長(zhǎng)整型[signed]long[int]4-2147483648(-231)2147483647(231-1)無符號(hào)長(zhǎng)整型unsignedlong[int]404294967295(232-1)
2.3
變量2.3.1整型變量
知識(shí)庫有符號(hào)整數(shù)將存儲(chǔ)單元中最左側(cè)的一位作為符號(hào)位,如果該位為0,表示數(shù)值為正;如果該位為1,表示數(shù)值為負(fù)。因此,最大的32位整數(shù)的二進(jìn)制表示形式是01111111111111111111111111111111,對(duì)應(yīng)的數(shù)值是2147483647(即231-1)。無符號(hào)整數(shù),即不帶符號(hào)位的整數(shù)(最左側(cè)的位是數(shù)值的一部分)。所以最大的32位整數(shù)的二進(jìn)制表示形式就是11111111111111111111111111111111,對(duì)應(yīng)的數(shù)值是4294967295(即232-1)。
2.3
變量2.3.1整型變量例如,定義一個(gè)整型變量a,并為其賦值0的方法如下:inta; /*定義一個(gè)整型變量a*/a=5; /*為a賦值5*/用戶也可定義變量的同時(shí)為變量賦初值,這種形式稱為變量的初始化。例如:inta=10; /*定義一個(gè)整型變量a并初始化為10*/
提示表格中的[]為可選部分。例如[signed]int,在編寫程序的時(shí)候可以用signedint表示有符號(hào)基本整型,也可以省略關(guān)鍵字signed,直接用int表示。
2.3
變量2.3.1整型變量
易錯(cuò)點(diǎn)撥編寫程序時(shí),定義變量的所有語句應(yīng)放在程序的最前面,即在其他所有語句之前,否則會(huì)產(chǎn)生錯(cuò)誤,例如:intc; /*定義一個(gè)整型變量c*/a=0; /*錯(cuò)誤!?。∫?yàn)橘x值語句前沒有定義變量a*/intb; /*定義變量b*/b=2; /*為變量b賦值*/
2.3
變量2.3.1整型變量【例2-2】#include<stdio.h>intmain(){ shorta,b; /*定義兩個(gè)短整型變量a和b*/ a=32767; /*將值32767賦給變量a*/ b=a+1; /*將a的值加1后賦給變量b*/ printf("a=%d,b=%d\n",a,b); /*輸出a和b的值*/ return0; /*函數(shù)返回值*/}有符號(hào)短整型數(shù)據(jù)的溢出。
2.3
變量2.3.1整型變量【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。
2.3
變量2.3.1整型變量【程序說明】我們定義的變量a和b都是有符號(hào)的短整型,其取值范圍為-32768~32767,所以無法表示大于32767或者小于-32768的數(shù),所以當(dāng)a的值加1變成了32768后就發(fā)生了“溢出”。但運(yùn)行時(shí)并不報(bào)錯(cuò),它好像汽車?yán)锍瘫硪粯樱_(dá)到最大值以后,又從最小值開始計(jì)數(shù)。所以32767加1后得到的結(jié)果不是32768,而是-32768。從這里可以看到:C語言的用法比較靈活,即使程序存在潛在問題,系統(tǒng)也不會(huì)給出“出錯(cuò)信息”,此時(shí)只能依靠程序員的經(jīng)驗(yàn)來保證結(jié)果的正確。在這里,我們只需把變量b改成int型或者long型,就可以得到預(yù)期的結(jié)果了(32768)。
拓展閱讀在使用整型常量時(shí),可以在常量的后面加上字符L(l)或者U(u)進(jìn)行修飾。L表示該常量為長(zhǎng)整型,U表示該常量為無符號(hào)整型,例如:a=1256L; /*L表示長(zhǎng)整型*/b=500U; /*U表示無符號(hào)整型*/
2.3
變量2.3.1整型變量整數(shù)類型并不適用于所有應(yīng)用。有時(shí)需要變量能夠存儲(chǔ)帶小數(shù)點(diǎn)的數(shù),或者能夠存儲(chǔ)極大數(shù)或極小數(shù)。這類數(shù)可以用實(shí)型變量進(jìn)行存儲(chǔ),實(shí)型變量也稱為浮點(diǎn)型變量。實(shí)型變量根據(jù)精度可以分為單精度類型、雙精度類型和長(zhǎng)雙精度類型等3種類型。具體的關(guān)鍵字表示和各類型的取值范圍如表所示。類型名稱關(guān)鍵字字節(jié)數(shù)精度取值范圍(絕對(duì)值)單精度float46個(gè)數(shù)字0以及1.2×10-38~2.4×1038雙精度double815個(gè)數(shù)字0以及2.3×10-308~1.7×10308長(zhǎng)雙精度longdouble815個(gè)數(shù)字0以及2.3×10-308~1.7×10308
2.3
變量2.3.2實(shí)型變量
拓展閱讀C標(biāo)準(zhǔn)沒有說明float、double和longdouble類型提供的數(shù)據(jù)精度到底是多少,因?yàn)椴煌挠?jì)算機(jī)可以用不同方法存儲(chǔ)浮點(diǎn)數(shù)。大多數(shù)現(xiàn)代計(jì)算機(jī)都遵循IEEE754標(biāo)準(zhǔn)規(guī)范。數(shù)值以科學(xué)計(jì)數(shù)法的形式存儲(chǔ),每個(gè)數(shù)都由三部分組成:符號(hào)、指數(shù)和小數(shù)。其中,指數(shù)部分的位數(shù)決定了實(shí)數(shù)的大小,小數(shù)部分的位數(shù)決定了實(shí)數(shù)的精度。
2.3
變量2.3.2實(shí)型變量單精度類型1單精度類型使用關(guān)鍵字float來進(jìn)行定義變量,它在內(nèi)存中占4個(gè)字節(jié),提供6位有效數(shù)字,取值范圍為-2.4×1038~-1.2×10-38、0以及1.2×10-38~2.4×1038。例如,定義一個(gè)單精度型變量fx,并為其賦值為5.78的方法如下:floatfx; /*定義單精度變量fx*/fx=5.78F; /*為fx賦值5.78*/
2.3
變量2.3.2實(shí)型變量由于實(shí)型變量由有限的存儲(chǔ)單元組成,能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將無法正確處理,由此可能會(huì)產(chǎn)生一些誤差,稱為實(shí)型數(shù)據(jù)的舍入誤差。上面提到了單精度有效數(shù)字為6位,超過6位將有可能無法正確顯示。
提示默認(rèn)狀態(tài)下,實(shí)型常量為double雙精度類型,如果要賦值給單精度類型的變量,可在常量后面加上符號(hào)F或者f。
2.3
變量2.3.2實(shí)型變量【例2-3】#include<stdio.h>intmain(){ floatf; /*定義單精度型變量f*/ f=1234567.90123; /*將值1234567.90123賦給變量f*/ printf("f=%f\n",f); /*輸出變量f的值*/ return0; /*函數(shù)返回值0*/}單精度型數(shù)據(jù)的有效位。
2.3
變量2.3.2實(shí)型變量【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。【程序說明】由于float型只接受6-7位有效數(shù)字,因此顯示的數(shù)據(jù)中只有前7位是保證正確的,后面的數(shù)據(jù)將無法正確處理,顯示的是編譯器隨機(jī)給出的數(shù)。為了擴(kuò)展有效數(shù)字范圍,可使用double類型或longdouble類型。
2.3
變量2.3.2實(shí)型變量雙精度類型2在C語言中,雙精度型(double)是用于存儲(chǔ)高精度浮點(diǎn)數(shù)的數(shù)據(jù)類型,相比float(單精度)具有更高的精度和更大的數(shù)值范圍,其特點(diǎn)和使用規(guī)則如下:存儲(chǔ)特性:通常占用8字節(jié)(64位)內(nèi)存空間;遵循IEEE754標(biāo)準(zhǔn),由1位符號(hào)位、11位指數(shù)位和52位尾數(shù)位組成;精度約為15-17位有效數(shù)字,數(shù)值范圍約為
±1.7×103??。
2.3
變量2.3.2實(shí)型變量【例2-4】#include<stdio.h>intmain(){ doublef; /*定義雙精度型變量f*/
f=1234567.90123; /*將值1234567.90123賦給變量f*/ printf("f=%f\n",f); /*輸出變量f的值*/ return0; /*函數(shù)返回值0*/}將例2-3中的變量定義為double類型。
2.3
變量2.3.2實(shí)型變量【運(yùn)行結(jié)果】運(yùn)行結(jié)果如圖所示。
2.3
變量2.3.2實(shí)型變量【程序說明】由于double型提供15-17位有效數(shù)字,所以輸出的數(shù)據(jù)數(shù)值是正確的。
提示用格式輸出函數(shù)printf輸出實(shí)型時(shí),輸出格式采用%f,默認(rèn)輸出6位小數(shù),不足6位補(bǔ)0,多于6位只保留6位,多余位數(shù)四舍五入,我們將在第4章中詳細(xì)介紹。
2.3
變量2.3.2實(shí)型變量長(zhǎng)雙精度類型3在C語言中,長(zhǎng)雙精度類型(longdouble)是精度最高的浮點(diǎn)類型,用于需要極高精度的數(shù)值計(jì)算,其特性如下:1.存儲(chǔ)與精度:標(biāo)準(zhǔn)未規(guī)定固定長(zhǎng)度,通常占用8、10或16字節(jié)(不同編譯器和系統(tǒng)有差異);精度普遍高于double,有效數(shù)字可達(dá)18-19位甚至更多;數(shù)值范圍更大,可表示更小或更大的浮點(diǎn)數(shù)。2.使用要點(diǎn):格式化輸出需用%Lf占位符(注意大寫L);兼容性較差,不同平臺(tái)實(shí)現(xiàn)差異大;運(yùn)算速度可能慢于float和double;僅在極高精度需求場(chǎng)景使用(如精密科學(xué)計(jì)算)。例如,定義一個(gè)長(zhǎng)雙精度型變量f,并為其賦值為15.08的方法如下:#include<stdio.h>intmain(){longdoublef;/*定義長(zhǎng)雙精度變量f*/f=15.08;/*為fl賦值15.08*/
printf("長(zhǎng)雙精度值:%Lf\n",f)
/*輸出f的值*/
return0;}
2.3
變量2.3.2實(shí)型變量字符型變量定義的關(guān)鍵字為char,在內(nèi)存中占一個(gè)字節(jié)。前面說過,字符型數(shù)據(jù)和整型數(shù)據(jù)可以互用,但是整型占4個(gè)字節(jié),字符型只占1個(gè)字節(jié),故當(dāng)整型量按字符型量處理時(shí),只有低八位參與處理。下面通過一個(gè)程序看一下字符型變量的定義與使用。【例2-5】#include<stdio.h>intmain(){charlow,up; /*定義字符變量low和up*/ low='a'; /*給變量low賦值'a'*/ up=low-32; /*low的值減去32后賦給變量upp*/ printf("low=%c,up=%c\n",low,up); /*以字符格式輸出low和up*/ printf("low=%d,up=%d\n",low,up); /*以整數(shù)格式輸出low和up*/ return0; /*函數(shù)返回值0*/}字符型變量的定義和使用。
2.3
變量2.3.3字符變量【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。【程序說明】用格式輸出函數(shù)printf輸出字符型數(shù)據(jù)時(shí),輸出格式為%c,此時(shí)輸出顯示字符。采用格式%d時(shí),將輸出字符對(duì)應(yīng)的ASCII碼的整型值。
2.3
變量2.3.3字符變量
目
錄目錄CONTENTS
C程序組成元素2.1
運(yùn)算符和表達(dá)式2.4
常量2.2
變量2.3
數(shù)據(jù)類型轉(zhuǎn)換2.5在C語言中運(yùn)算量和運(yùn)算符組成了表達(dá)式,而表達(dá)式是處理數(shù)據(jù)和執(zhí)行各種操作的基本單位。運(yùn)算量包括常量與變量,而C語言的運(yùn)算符很多,大致可以分為以下幾類:算術(shù)運(yùn)算符:+-*/%++--關(guān)系運(yùn)算符:><>=<===!=邏輯運(yùn)算符:&&||!位運(yùn)算符:&|~^<<>>條件運(yùn)算符:?:賦值運(yùn)算符:=+=-=*=/=%=&=|=^=>>=<<=逗號(hào)運(yùn)算符:,指針運(yùn)算符:*&
2.4
運(yùn)算符和表達(dá)式32147658構(gòu)造類型特殊運(yùn)算符:.->下標(biāo)運(yùn)算符:[]圓括號(hào)運(yùn)算符:()大括號(hào)運(yùn)算符:{}求字節(jié)數(shù)運(yùn)算符:sizeof類型轉(zhuǎn)換運(yùn)算符:(類型標(biāo)識(shí)符)(表達(dá)式)其他:如函數(shù)調(diào)用運(yùn)算符()本章只介紹算術(shù)運(yùn)算符、賦值運(yùn)算符、逗號(hào)運(yùn)算符和位運(yùn)算符,其他運(yùn)算符將陸續(xù)在以后各章中介紹。
2.4
運(yùn)算符和表達(dá)式1110912141315C語言的算術(shù)運(yùn)算符包括兩大類:一類是基本的算術(shù)運(yùn)算符,包括2個(gè)單目算術(shù)運(yùn)算符和5個(gè)雙目算術(shù)運(yùn)算符;另一類是自增和自減這兩個(gè)特殊的運(yùn)算符。下面對(duì)這兩類運(yùn)算符進(jìn)行詳細(xì)介紹?;镜乃阈g(shù)運(yùn)算符1基本算術(shù)運(yùn)算符包括兩個(gè)單目運(yùn)算符(正和負(fù)),5個(gè)雙目運(yùn)算符(加、減、乘、除和模運(yùn)算)。具體符號(hào)及其對(duì)應(yīng)的功能舉例如表所示。注意:/對(duì)整數(shù)運(yùn)算時(shí)會(huì)截?cái)嘈?shù);%僅用于整數(shù)。運(yùn)算符功能舉例結(jié)果+正號(hào)運(yùn)算(單目運(yùn)算符)+aa的值-負(fù)號(hào)運(yùn)算(單目運(yùn)算符)-aa的負(fù)數(shù)+加法運(yùn)算a+ba和b的和-減法運(yùn)算a-ba和b的差*乘法運(yùn)算a*ba和b的積/除法運(yùn)算a/ba除以b的商%模運(yùn)算(求余運(yùn)算)a%ba除以b的余數(shù)
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式在表達(dá)式中使用算術(shù)運(yùn)算符,則將表達(dá)式稱為算術(shù)表達(dá)式。算術(shù)表達(dá)式的計(jì)算根據(jù)運(yùn)算符的優(yōu)先級(jí)從高到低依次執(zhí)行。對(duì)于一個(gè)運(yùn)算量?jī)蓚?cè)同優(yōu)先級(jí)的運(yùn)算符,按結(jié)合律方向進(jìn)行。算術(shù)運(yùn)算符的結(jié)合律皆為“左結(jié)合性”,即同優(yōu)先級(jí)算術(shù)運(yùn)算符按“自左向右”方向進(jìn)行計(jì)算。例如,對(duì)于a+b-c,先計(jì)算a+b,再減c。運(yùn)算符優(yōu)先級(jí):①括號(hào)()、數(shù)組下標(biāo)[]、結(jié)構(gòu)體成員訪問.和->;②單目運(yùn)算符(!、~、++、--、*、&、sizeof);③算術(shù)運(yùn)算符(先*、/、%,后+、-);④位運(yùn)算符(<<、>>);⑤關(guān)系運(yùn)算符(<、>、<=、>=高于==、!=);⑥位運(yùn)算符(&高于^高于|);⑦邏輯運(yùn)算符(&&高于||);⑧條件運(yùn)算符?:;⑨賦值運(yùn)算符(=、+=等);⑩逗號(hào)運(yùn)算符
。
提示1.由于鍵盤中沒有×號(hào)和÷號(hào),運(yùn)算符用*和/代替。2.對(duì)于除法運(yùn)算符/,如果是兩個(gè)整數(shù)相除,則結(jié)果亦為整數(shù),小數(shù)部分將被去掉,如7/2=3,而不是2.5。只有兩數(shù)中有一個(gè)是浮點(diǎn)數(shù),結(jié)果才為浮點(diǎn)數(shù)。3.模運(yùn)算符%只適用于兩個(gè)整數(shù)取余,其兩個(gè)運(yùn)算變量只能是整型或字符型(ASCII碼),而不能是其他類型。其中,余數(shù)結(jié)果的符號(hào)由被除數(shù)決定,如8%(-3)=2,而(-8)%3=-2。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式自增運(yùn)算符++及自減運(yùn)算符--的作用是讓變量的值加1或減1。但自增自減運(yùn)算符都有前置與后置之分,前置后置決定了變量使用與計(jì)算(加1或減1)的順序:自增自減運(yùn)算符2自增運(yùn)算符前置,如++i,是先將i的值加1,再使用加1后i的值。自增運(yùn)算符后置,如i++,是先使用i當(dāng)前的值,再將i的值加1。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式12自減運(yùn)算符前置,如--i,是先將i的值減1,再使用減1后i的值。自減運(yùn)算符后置,如i--,是先使用i當(dāng)前的值,再將i的值減1。
提示自增自減運(yùn)算符只能作用于單個(gè)變量,不能用于常量或表達(dá)式,例如,3++,(a+b)--都是不合法的。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式12【例2-6】#include<stdio.h>intmain(){ inta,b,c,d;
/*定義a,b,c,d四個(gè)整型變量*/ a=10;
/*a賦值為10*/ b=5;
/*b賦值為5*/ c=a++;
/*自增運(yùn)算符后置,先將a的值賦給c,a再自加1*/ d=--b;
/*自減運(yùn)算符前置,b先自減1,再將值賦給d*/ printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); /*輸出a,b,c,d的值*/ return0; /*函數(shù)返回值0*/}比較自增、自減運(yùn)算符前置與后置的不同。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式【程序說明】實(shí)際上,程序中c=a++,可看作兩步:先是計(jì)算c=a,所以c等于10;后計(jì)算a=a+1,所以a等于11。程序中的d=--b,亦可等價(jià)于先計(jì)算b=b-1,后計(jì)算d=b,所以b等于4,d也等于4。因此下面程序與例2-6的程序功能是等價(jià)的?!具\(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式#include<stdio.h>intmain(){ inta,b,c,d; /*定義a,b,c,d四個(gè)整型變量*/ a=10; /*a賦值為10*/ b=5; /*b賦值為5*/ c=a; /*將a的值賦給c*/ a=a+1; /*a+1后的值賦給a*/ b=b-1; /*b-1后的值賦給b*/ d=b; /*b的值賦給d*/ printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d); /*輸出a,b,c,d的值*/ return0; /*函數(shù)返回值0*/}
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式自增自減運(yùn)算符常用于循環(huán)語句中,使循環(huán)變量自動(dòng)加1;也用于指針變量,使指針指向下一個(gè)地址。這些將在后面的章節(jié)中介紹。【運(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。
拓展閱讀使用++和--運(yùn)算符時(shí),常常會(huì)出現(xiàn)一些人們想不到的副作用,如a+++b,是理解為(a++)+b,還是a+(++b)呢?為避免二義性,可以加上括號(hào),如(a++)+b。
2.4
運(yùn)算符和表達(dá)式2.4.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式=是最基本的賦值運(yùn)算符,作用是將右邊表達(dá)式的值賦給左邊的變量。語法格式:變量=表達(dá)式;示例:inta,b,c;a=10;//將常量10賦給變量aa=(3+5)*2;//將表達(dá)式計(jì)算結(jié)果16賦給變量ab=a;//聲明變量時(shí)同時(shí)賦值(初始化)c=b=a+3;//作用是先把a(bǔ)+3的值賦給b,最后賦給c注意:賦值運(yùn)算符左邊必須是可修改的左值(如變量),不能是常量或表達(dá)式;=與==不同,==是關(guān)系運(yùn)算符(判斷相等),不要混淆。簡(jiǎn)單賦值1
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式
高手點(diǎn)撥在為變量賦初值時(shí),如果要對(duì)幾個(gè)變量賦予同一個(gè)初值,可以采用如下格式:inta,b,c;a=b=c=0;也可以寫成:inta=0,b=0,c=0;但是不能寫成:inta=b=c=0;
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式
提示(a=b)=2-2;這條語句是錯(cuò)誤的,因?yàn)?a=b)不是變量,而是表達(dá)式,賦值表達(dá)式中左側(cè)必須是變量。下面我們列舉一些賦值語句的例子以幫助我們理解:a=2+(b=3); /*表達(dá)式的值為5,a的值為5,b的值為3*/a=(b=4)+(c=2); /*表達(dá)式的值為6,a的值為6,b的值為4,c的值為2*/a=(b=5)/(c=2); /*表達(dá)式的值為2,a的值為2,b的值為5,c的值為2*/a=(b=2-2); /*將2-2的值先賦給b,然后把b的值賦給a,a和b的值都是1*/
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式復(fù)合賦值運(yùn)算符是將算術(shù)運(yùn)算符或位運(yùn)算符與賦值運(yùn)算符結(jié)合,形成簡(jiǎn)化的賦值表達(dá)式。使用復(fù)合賦值運(yùn)算符可以讓代碼更簡(jiǎn)潔。復(fù)合賦值2
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符都為同一優(yōu)先級(jí),遵循“右結(jié)合性”,其結(jié)合方向?yàn)椤白杂蚁蜃蟆薄?/p>
提示如果b是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào),例如:a*=b-3; /*相當(dāng)于a=a*(b-3);*/
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式示例:intx=10;x+=5;//等價(jià)于x=x+5;結(jié)果x=15x*=2;//等價(jià)于x=x*2;結(jié)果x=30x-=8;//等價(jià)于x=x-8;結(jié)果x=22x%=5;//等價(jià)于x=x%5;結(jié)果x=2(22除以5余數(shù)為2)【例2-7】#include<stdio.h>intmain(){inta=1; /*定義整型變量a,并將其賦值為1*/a*=a-=5; /*用復(fù)合賦值運(yùn)算計(jì)算a的值*/printf("a=%d\n",a); /*輸出a的值*/return0; /*函數(shù)返回值0*/}賦值運(yùn)算的結(jié)合性。
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式【程序說明】因?yàn)橘x值運(yùn)算符為右結(jié)合性,在表達(dá)式a*=a-=5中,故先計(jì)算a-=5,等價(jià)于a=a-5,則a變?yōu)?4;再計(jì)算a*=a,等價(jià)于a=(-4)*(-4),所以最后結(jié)果為a=16?!具\(yùn)行結(jié)果】程序運(yùn)行結(jié)果如圖所示。
2.4
運(yùn)算符和表達(dá)式2.4.2賦值運(yùn)算符與賦值表達(dá)式在C語言中,逗號(hào)運(yùn)算符(,)是一種特殊的運(yùn)算符,它允許將多個(gè)表達(dá)式組合成一個(gè)表達(dá)式(稱為逗號(hào)表達(dá)式),并按順序執(zhí)行這些表達(dá)式。1.逗號(hào)表達(dá)式的基本形式逗號(hào)表達(dá)式的語法格式:表達(dá)式1,表達(dá)式2,...,表達(dá)式n執(zhí)行規(guī)則:從左到右依次執(zhí)行每個(gè)表達(dá)式,整個(gè)逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式(表達(dá)式n)的值,逗號(hào)運(yùn)算符的優(yōu)先級(jí)是所有運(yùn)算符中最低的。2.使用示例#include<stdio.h>intmain(){inta,b,c,//基本用法:依次執(zhí)行,返回最后一個(gè)表達(dá)式的值
2.4
運(yùn)算符和表達(dá)式2.4.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式a=(1+2,3*4,5-6);//a的值為-1(最后一個(gè)表達(dá)式5-6的結(jié)果)//結(jié)合賦值的使用b=10;c=(b++,b*2,b+5);//執(zhí)行順序:b++(b=11)→b*2(22)→b+5(16),c=16//在for循環(huán)中的典型應(yīng)用for(inti=0,j=10;i<j;i++,j--){printf("i=%d,j=%d\n",i,j);}return0;}
2.4
運(yùn)算符和表達(dá)式2.4.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式3.逗號(hào)運(yùn)算符的應(yīng)用場(chǎng)景簡(jiǎn)化代碼:在允許單個(gè)表達(dá)式的地方執(zhí)行多個(gè)操作intx;x=0;x++;x*=2;//可簡(jiǎn)化為x=(x=0,x++,x*=2);for循環(huán)控制:在循環(huán)初始化和迭代部分聲明或修改多個(gè)變量for(inti=0,sum=0;i<=100;i++,sum+=i){...}函數(shù)參數(shù):注意函數(shù)參數(shù)中的逗號(hào)是分隔符,不是逗號(hào)運(yùn)算符printf("%d,%d",a,b);//這里的逗號(hào)是參數(shù)分隔符printf("%d",(a,b));//這里的逗號(hào)是運(yùn)算符,輸出b的值
2.4
運(yùn)算符和表達(dá)式2.4.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式4.注意事項(xiàng)(1)逗號(hào)運(yùn)算符優(yōu)先級(jí)最低,必要時(shí)需用括號(hào)改變運(yùn)算順序intx=10,y=20;intresult=x+y,x*y;//錯(cuò)誤!會(huì)被解析為(result=x+y),(x*y)intresult=(x+y,x*y);//正確,result的值為x*y的結(jié)果(2)避免過度使用逗號(hào)表達(dá)式,可能降低代碼可讀性(3)區(qū)分逗號(hào)作為運(yùn)算符和分隔符的不同用法(函數(shù)參數(shù)、變量聲明中的逗號(hào)是分隔符)逗號(hào)表達(dá)式為C語言提供了一種將多個(gè)操作組合在一起的方式,合理使用可以使代碼更緊湊,但需注意其優(yōu)先級(jí)和可讀性問題。
2.4
運(yùn)算符和表達(dá)式2.4.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式位運(yùn)算是C語言中比較有特色的功能。所謂位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算,例如將一個(gè)存儲(chǔ)單元中的各二進(jìn)制位左移或右移一位。位運(yùn)算符包括按位與、按位或、按位異或、取反、左移和右移這6種,其中只有取反運(yùn)算是單目運(yùn)算,其余都是雙目運(yùn)算,且參與位運(yùn)算的運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能是實(shí)型數(shù)據(jù)。“按位與”運(yùn)算符(&)1參與運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1;否則為0。即0&0=0,0&1=0,1&0=0,1&1=1。例如,2&3結(jié)果并不等于5,應(yīng)該按位與,計(jì)算結(jié)果應(yīng)為2,計(jì)算過程如下:
2.4
運(yùn)算符和表達(dá)式2.4.4位運(yùn)算符與位運(yùn)算“按位或”運(yùn)算符(|)2兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值就為1。即0|0=0,0|1=1,1|0=1,1|1=1。例如,2|3的結(jié)果為3,計(jì)算過程如下:
2.4
運(yùn)算符和表達(dá)式2.4.4位運(yùn)算符與位運(yùn)算“異或”運(yùn)算符(^)3異或運(yùn)算的規(guī)則是:如果參與運(yùn)算的兩個(gè)二進(jìn)制位相同,則結(jié)果為0;不同則為1。即0^0=0,0^1=1,1^0=1,1^1=0。例如,2^3的值為1,計(jì)算過程如下:
2.4
運(yùn)算符和表達(dá)式2.4.4位運(yùn)算符與位運(yùn)算“取反”運(yùn)算符(~)4取反運(yùn)算是一個(gè)單目運(yùn)算符,用來對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變?yōu)?,將1變?yōu)?。例如,~3(即二進(jìn)制數(shù)為00000011)按位取反后為252(即二進(jìn)制數(shù)為11111100)。左移運(yùn)算符(<<)5左移運(yùn)算用來將一個(gè)數(shù)的各二進(jìn)制位全部左移若干位,高位左移溢出后舍棄。例如:a=a<<2,表示將a的二進(jìn)制數(shù)左移2位,右補(bǔ)0。若a=3,即二進(jìn)制數(shù)00000011,左移2位得00001100,結(jié)果為十進(jìn)制數(shù)12。
2.4
運(yùn)算符和表達(dá)式2.4.4位運(yùn)算符與位運(yùn)算右移運(yùn)算符(>>)6右移運(yùn)算用來將一個(gè)數(shù)的二進(jìn)制位全部右移若干位,移到右端的低位被舍棄,對(duì)無符號(hào)數(shù),高位補(bǔ)0。例如:a=a>>1,表示將a的二進(jìn)制數(shù)右移1位,左補(bǔ)0。若a=3,即二進(jìn)制數(shù)00000011,右移1位得00000001,即最低位的1被舍棄,得十進(jìn)制數(shù)1。對(duì)于有符號(hào)數(shù),在右移時(shí),符號(hào)位將一同移動(dòng),當(dāng)為正數(shù)時(shí),最高位補(bǔ)0;而為負(fù)數(shù)時(shí),符號(hào)位為1,最高位是補(bǔ)0或是補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。VisualC++6.0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年定西市消防救援支隊(duì)招聘戰(zhàn)勤保障專職消防員的備考題庫及1套參考答案詳解
- 2026年中國石油大學(xué)(北京)校醫(yī)院招聘?jìng)淇碱}庫及完整答案詳解1套
- 2026年北京大學(xué)基礎(chǔ)醫(yī)學(xué)院孔煒教授課題組合同制人員招聘?jìng)淇碱}庫及答案詳解參考
- 2026年吉林生物能源(榆樹)有限公司招聘?jìng)淇碱}庫及答案詳解一套
- 2026年臺(tái)州市市政公用工程建設(shè)中心(臺(tái)州市村鎮(zhèn)建設(shè)事務(wù)中心)招聘編制外用工備考題庫及1套完整答案詳解
- 2026年廣西農(nóng)業(yè)科學(xué)院玉米研究所玉米抗逆育種研究團(tuán)隊(duì)公開招聘編制外工作人員備考題庫完整參考答案詳解
- 2026年四川深廣合作產(chǎn)業(yè)投資開發(fā)有限公司產(chǎn)業(yè)招商崗公開招聘?jìng)淇碱}庫及1套完整答案詳解
- 2026年中建四局建設(shè)發(fā)展(河南)建設(shè)有限公司招聘?jìng)淇碱}庫及一套完整答案詳解
- 2026年中國中金財(cái)富證券有限公司海南分公司招聘?jìng)淇碱}庫及答案詳解1套
- 2026年中交一航局西南工程有限公司招聘?jìng)淇碱}庫及完整答案詳解1套
- 足療店消防安全制度
- 奧林巴斯微單相機(jī)E-PL8說明書
- 智能安全帽解決方案-智能安全帽
- 中醫(yī)臨床路徑18脾胃科
- 零星維修合同模板
- 九三學(xué)社申請(qǐng)入社人員簡(jiǎn)歷表
- 聚氨酯門窗研究匯報(bào)
- 醫(yī)院電子病歷四級(jí)建設(shè)需求
- 上海2023屆高三二模數(shù)學(xué)卷匯總(全)
- 《銳角三角函數(shù)》復(fù)習(xí)(公開課)課件
- 計(jì)算機(jī)視覺PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論