版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)習(xí)目標(biāo)
理解C語(yǔ)言標(biāo)識(shí)符的概念并能靈活運(yùn)用,理解并掌握基本數(shù)據(jù)類型及其相互轉(zhuǎn)換,掌握常量與變量的概念并能靈活運(yùn)用,重點(diǎn)掌握各種運(yùn)算符及表達(dá)式的使用方法。第3章基本數(shù)據(jù)類型與數(shù)據(jù)運(yùn)算學(xué)習(xí)內(nèi)容3.1基本標(biāo)識(shí)符3.2數(shù)據(jù)類型3.3常量與變量3.4基本數(shù)據(jù)類型的轉(zhuǎn)換3.5運(yùn)算符和表達(dá)式應(yīng)用舉例3.1基本標(biāo)識(shí)符3.1.1保留關(guān)鍵字在C語(yǔ)言中有一些標(biāo)識(shí)符被稱為保留關(guān)鍵字(共32個(gè)),系統(tǒng)已經(jīng)預(yù)先定義了它們的具體含義,它們具有特殊的用途,不允許用戶再作它用。1.標(biāo)識(shí)數(shù)據(jù)類型float,int,long,short,char,double等。2.標(biāo)識(shí)流程控制break,continue,else,for等。3.標(biāo)識(shí)存儲(chǔ)類型auto,static等。4.標(biāo)識(shí)運(yùn)算符sizeof1.編譯預(yù)處理命令define,include,ifdef等。2.標(biāo)準(zhǔn)庫(kù)函數(shù)名fabs,sqrt,pow,printf等。3.1.3用戶自定義標(biāo)識(shí)符命名規(guī)則:(1)以字母或下劃線開(kāi)頭,且后跟字母、數(shù)字、下劃線的組合。(2)變量名不能包含除“_”(下劃線)以外的任何特殊字符,如:%、#、逗號(hào)、空格等。(3)變量名不能包含空白字符(換行符、空格和制表符稱為空白字符)。(4)要區(qū)分字母的大小寫。如SUN、SUn、Sun、sun等都是不同的標(biāo)識(shí)符。3.1.2預(yù)定義標(biāo)識(shí)符【注意】(1)通常變量名、函數(shù)名用小寫,而符號(hào)常量名用大寫。(2)不要使用系統(tǒng)關(guān)鍵字、預(yù)定義標(biāo)識(shí)符作為用戶自定義的標(biāo)識(shí)符。(3)定義標(biāo)識(shí)符時(shí)應(yīng)該做到“見(jiàn)名知意”,以增加程序的可讀性。(4)ANSIC和C++標(biāo)準(zhǔn)都沒(méi)有限定標(biāo)識(shí)符的長(zhǎng)度,但各個(gè)C和C++編譯系統(tǒng)都有自己的規(guī)定。為保證程序的可移植性,建議標(biāo)識(shí)符的命名不要超過(guò)8個(gè)字符。3.2數(shù)據(jù)類型數(shù)據(jù)類型全稱類型說(shuō)明符(縮寫標(biāo)識(shí)符)長(zhǎng)度范圍字符型char8-128~127無(wú)符號(hào)字符型unsignedchar80~255有符號(hào)字符型signedchar8-128~127整型int16-32768~32767無(wú)符號(hào)整型unsignedint(unsigned)160~65535有符號(hào)整型signedint16-32768~32767短整型shortint(short)16-32768~32767無(wú)符號(hào)短整型unsignedshortint(unsignedshort)160~65535有符號(hào)短整型signedshortint16-32768~32767長(zhǎng)整型longint(long)32-2147483648~2147483647有符號(hào)長(zhǎng)整型signedlongint32-2147483648~2147483647無(wú)符號(hào)長(zhǎng)整型unsignedlongint(unsignedlong)320~4294967295單精度型float32約精確到7位數(shù)雙精度型double64約精確到15位數(shù)表3.1ANSIC標(biāo)準(zhǔn)中的數(shù)據(jù)類型【注意】(1)在字長(zhǎng)大于16位的系統(tǒng)中,shortint與signedchar可能不等,不能縮寫。(2)因字符型、整數(shù)的缺省定義是有符號(hào)數(shù),所以singed可省略,但也可以使用。(3)C編譯程序允許使用整型的簡(jiǎn)寫形式,即所有的int均可缺省。(4)某些實(shí)現(xiàn)允許將unsigned用于浮點(diǎn)型,如unsigneddouble,但該用法降低了程序的可移植性,建議不要采用。3.3.1常量常量是指那些在程序執(zhí)行過(guò)程中其值保持不變的量。常量不需要類型說(shuō)明就可以直接使用,常量的類型是由常量本身隱含決定的。常量通常用于定義具有如下特點(diǎn)的數(shù)據(jù):在程序中保持不變,在程序內(nèi)部頻繁使用,需要用比較簡(jiǎn)單的方式替代某些值等。C語(yǔ)言的常量按其表現(xiàn)形式可以分為直接常量和符號(hào)常量?jī)煞N。3.3常量與變量3.3.1.1直接常量直接常量就是用數(shù)字直接表示的常量,在程序中可以直接使用,具體可分為以下幾種基本類型。1.整型常量整型常量即整型常數(shù),它可以用十進(jìn)制、八進(jìn)制、十六進(jìn)制三種形式進(jìn)行表示。凡以數(shù)字0開(kāi)頭,由0~7組成的序列均作為八進(jìn)制數(shù)處理;凡以0x(或0X)開(kāi)頭的數(shù)字、字符a~f(或A~F)組成的序列均作為十六進(jìn)制數(shù)處理;其它情況下的數(shù)字序列均作為十進(jìn)制數(shù)處理。【說(shuō)明】(1)整型常數(shù)在不加特別說(shuō)明時(shí)總是正值。如果需要的是負(fù)值,則負(fù)號(hào)‘-’必須置于常數(shù)表達(dá)式的前面。(2)每個(gè)常數(shù)都要根據(jù)其值的需要給出一種數(shù)據(jù)類型。當(dāng)整型常數(shù)應(yīng)用于某一表達(dá)式時(shí)(或出現(xiàn)有負(fù)號(hào)),常數(shù)類型自動(dòng)進(jìn)行相應(yīng)的轉(zhuǎn)換。十進(jìn)制常數(shù)可等價(jià)于帶符號(hào)的整型(或長(zhǎng)整型),這取決于所需的常數(shù)的尺寸。(3)八進(jìn)制和十六進(jìn)制常數(shù)可對(duì)應(yīng)整型、無(wú)符號(hào)整型、長(zhǎng)整型、無(wú)符號(hào)長(zhǎng)整型,具體類型也取決于常數(shù)的大小,但必須注意取值范圍。2.實(shí)型常量實(shí)型常量又稱浮點(diǎn)常量,是一個(gè)用十進(jìn)制表示的符號(hào)實(shí)數(shù),只有十進(jìn)制一種表示方式(但可進(jìn)一步分為十進(jìn)制小數(shù)和十進(jìn)制指數(shù)兩種形式)。符號(hào)實(shí)數(shù)的值包括整數(shù)部分、尾數(shù)部分和指數(shù)部分。格式:[n1][.n2][E|e[+|-]n3]其中n1,n2,n3分別是一位或多位十進(jìn)制數(shù)字(從0~9);E(或e)是指數(shù)符號(hào),小數(shù)點(diǎn)之前是整數(shù)部分,小數(shù)點(diǎn)之后是尾數(shù)部分,它們是可省略的,小數(shù)點(diǎn)在沒(méi)有尾數(shù)時(shí)可以省略,指數(shù)部分用E或e開(kāi)頭,冪指數(shù)可以為負(fù),當(dāng)沒(méi)有符號(hào)時(shí)視為正,指數(shù)的基數(shù)為10【說(shuō)明】(1)默認(rèn)情況下,實(shí)型常量為正值,如果要表示負(fù)值,需要在常量前使用負(fù)號(hào)。(2)在實(shí)型常量中不得出現(xiàn)任何空白符號(hào)。(3)所有的實(shí)型常量均視為雙精度類型。(4)實(shí)型常量的整數(shù)部分為0時(shí)可以省略。(5)注意字母E(或e)的前后都必須有數(shù)字,且E(或e)后面的指數(shù)必須為整數(shù)。
如e8,2.3e,3.5,e,.e8等都是不合法的指數(shù)形式。3.字符常量字符常量是指用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符。如
'a','9','!'。字符常量中的單引號(hào)僅起定界作用,并不表示字符本身。單引號(hào)括起來(lái)的字符不能是單引號(hào)(’)和反斜杠(\),它們特有的表示方法在轉(zhuǎn)義字符中介紹。在C語(yǔ)言中,字符是按其所對(duì)應(yīng)的ASCII碼值來(lái)存儲(chǔ)的,一個(gè)字符占一個(gè)字節(jié),詳細(xì)對(duì)應(yīng)關(guān)系見(jiàn)附錄A?!咀⒁狻浚?)注意字符數(shù)字(‘0’~‘9’)和數(shù)字(0~9)的含義和在計(jì)算機(jī)中的存儲(chǔ)方式是截然不同的,前者是字符常量,存儲(chǔ)的是相應(yīng)的ASCII值;后者是整型常量,存儲(chǔ)的是相應(yīng)的二進(jìn)制數(shù)。(2)由于C語(yǔ)言中字符常量是按短整數(shù)(short型)存儲(chǔ)的,所以字符常量可以像整數(shù)一樣在程序中參與相關(guān)的運(yùn)算。4字符串常量字符串常量是指用一對(duì)雙引號(hào)括起來(lái)的一串字符。雙引號(hào)僅起定界作用,雙引號(hào)括起來(lái)的字符串中不能含雙引號(hào)(")和反斜杠(\),它們特有的表示法在轉(zhuǎn)義字符中介紹。如"China","Cprogram","YES&NO","333222-666999","A"等均為字符串常量。3.2字符串的存儲(chǔ)字符串常量在內(nèi)存中存儲(chǔ)時(shí),系統(tǒng)自動(dòng)在字符串的末尾加一個(gè)“串結(jié)束標(biāo)志”(即ASCII碼值為0的字符NULL),常用‘\0’表示。因此在程序中,含有n個(gè)字符的字符串常量,在內(nèi)存中占有n+1個(gè)字節(jié)的存儲(chǔ)空間。【注意】(1)'A'與"A"是不同的。前者是一個(gè)字符常量,在內(nèi)存中只占一個(gè)字節(jié)的空間,后者是一個(gè)字符串常量,它由字符'A'和'\0'組成,在內(nèi)存中占兩個(gè)字節(jié)的空間。(2)""和″是不同的。前者是一個(gè)空字符串常量"",它實(shí)際上包含了一個(gè)空字符'\0',在內(nèi)存中占用一個(gè)字節(jié)的存儲(chǔ)空間。而后者″則是非法的用法。5轉(zhuǎn)義字符轉(zhuǎn)義字符是C語(yǔ)言中表示字符的一種特殊形式,是一種特殊的字符常量。通常使用轉(zhuǎn)義字符表示ASCII碼字符集中不可打印的控制字符和特定功能的字符,轉(zhuǎn)義字符用反斜杠’\’后面跟一個(gè)字符或一個(gè)八進(jìn)制或一個(gè)十六進(jìn)制數(shù)表示,見(jiàn)表3.2。轉(zhuǎn)義字符意義ASCII碼值(十進(jìn)制)\a響鈴(BEL)007\b退格(BS)008\f換頁(yè)(FF)012\n換行(LF)010\r回車(CR)013\t水平制表(HT)009\v垂直制表(VT)011\\反斜杠092\?問(wèn)號(hào)字符063\'單引號(hào)字符039\"雙引號(hào)字符034\0空字符(NULL)000\ddd任意字符三位八進(jìn)制數(shù)\xhh任意字符二位十六進(jìn)制數(shù)如果在字符常量中需要使用單引號(hào)、雙引號(hào)和反斜杠,則必須使用轉(zhuǎn)義字符來(lái)表示,即在這些字符前加上反斜杠’\’。在C程序中使用轉(zhuǎn)義字符\ddd(或者\(yùn)xhh)可以表示任意字符?!癨ddd”為反斜杠后面跟三位八進(jìn)制數(shù),該三位八進(jìn)制數(shù)的值即為對(duì)應(yīng)的八進(jìn)制ASCII碼值?!癨xhh”為反斜杠后面跟兩位十六進(jìn)制數(shù),該兩位十六進(jìn)制數(shù)的值即為對(duì)應(yīng)的十六進(jìn)制ASCII碼值?!菊f(shuō)明】(1)轉(zhuǎn)義字符中只能使用小寫字母,每個(gè)轉(zhuǎn)義字符只能看作一個(gè)字符。(2)使用不可打印字符時(shí),通常用轉(zhuǎn)義字符表示。(3)“\v”垂直制表和“\f”換頁(yè)符對(duì)屏幕沒(méi)有任何影響,但會(huì)影響打印機(jī)執(zhí)行響應(yīng)操作。3.3.1.2符號(hào)常量符號(hào)常量就是用一個(gè)標(biāo)識(shí)符來(lái)代表的常量。符號(hào)常量一般使用大寫英文字母表示,以區(qū)別于一般用小寫字母表示的變量。符號(hào)常量在使用前必須先用預(yù)處理命令“#define”進(jìn)行定義。定義符號(hào)常量的目的是為了提高程序的可讀性,便于程序的調(diào)試、修改和移植。因此在定義符號(hào)常量時(shí),所使用的符號(hào)常量名應(yīng)盡可能地表達(dá)它所代表的常量的含義。格式:#define<符號(hào)常量名><常量>功能:用被定義了的符號(hào)常量名來(lái)代替常量。【說(shuō)明】(1)習(xí)慣上總是用大寫字母來(lái)組成符號(hào)常量名。(2)符號(hào)常量的值在其作用域內(nèi)不能改變,也不能被重新賦值。還有一種常量叫枚舉常量,在第10章中作介紹。3.3.2變量變量是指那些在程序執(zhí)行過(guò)程中其值可以改變的量。變量在內(nèi)存中要占用一定的存儲(chǔ)空間來(lái)存放變量的值,它們有名字和數(shù)據(jù)類型。編寫程序時(shí),常常需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,方便后面使用或者修改這個(gè)數(shù)據(jù)的值。所有變量都具有數(shù)據(jù)類型,以決定能夠存儲(chǔ)哪種數(shù)據(jù);變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲(chǔ)到計(jì)算機(jī)的內(nèi)存中。所有的變量都要有一個(gè)名字,變量名必須是合法的標(biāo)識(shí)符。3.3.2.1變量的名稱變量的名稱通常用一個(gè)標(biāo)識(shí)符表示,它占居一定數(shù)量的存貯單元,其單元個(gè)數(shù)根據(jù)變量類型的不同而不同(詳見(jiàn)表3.1)。變量的命名規(guī)則與用戶自定義標(biāo)識(shí)符的命名規(guī)則相同。【注意】C語(yǔ)言中變量名與其類型無(wú)關(guān)。3.3.2.2變量的定義格式在C語(yǔ)言中,變量在使用前必須先定義,以確定它的數(shù)據(jù)類型和存儲(chǔ)類型,進(jìn)而確定該變量所能進(jìn)行的運(yùn)算。格式:[<存儲(chǔ)類型>]<數(shù)據(jù)類型><變量名1>[[=<初值1>],…<變量名n>[[=<初值n>]];功能:定義變量名所指定的變量,并可以賦初值。【說(shuō)明】(1)變量名標(biāo)明數(shù)據(jù)在內(nèi)存中的地址,編譯時(shí)系統(tǒng)為每個(gè)變量名分配一個(gè)內(nèi)存地址。在程序中,對(duì)變量的存取實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,然后從其存儲(chǔ)單元中讀取數(shù)據(jù)。(2)聲明變量類型的目的是告訴系統(tǒng)變量需要占用的存儲(chǔ)單元數(shù)目(不同類型的數(shù)據(jù)在內(nèi)存中所占的存儲(chǔ)單元數(shù)目是不同的),以便系統(tǒng)為變量分配相應(yīng)的存儲(chǔ)單元。(3)一次可以定義多個(gè)同一類型的變量。3.3.2.3變量的值某些變量在定義的同時(shí)必須對(duì)它們進(jìn)行初始化,也就是給它們賦初值,以確保它們?cè)诔绦蜻\(yùn)行時(shí)有確定的值。變量的初始化通常在變量定義時(shí)通過(guò)賦值語(yǔ)句來(lái)實(shí)現(xiàn)。3.3.2.4變量的類型C規(guī)定在程序中所用到的變量都必須指定其類型,這是和BASIC、FORTRAN等語(yǔ)言不同的,而與Pascal語(yǔ)言相似。變量在程序中先定義后使用,具體可分為以下幾種基本類型。1.整型變量根據(jù)數(shù)據(jù)的取值范圍,ANSI標(biāo)準(zhǔn)將整型變量分為基本整型、短整型和長(zhǎng)整型三大類。其中每一類又分為無(wú)符號(hào)和有符號(hào)兩種情況。2.實(shí)型變量實(shí)型變量分為單精度型(float型)、雙精度型(double型)和長(zhǎng)雙精度型(longdouble型)。3字符型變量字符型變量只能用來(lái)存放一個(gè)字符,而在一個(gè)字符型變量中不可以存放字符串。【注意】C語(yǔ)言中有字符常量、字符串常量、字符變量,卻沒(méi)有字符串變量,字符串將用字符數(shù)組來(lái)存儲(chǔ)(詳見(jiàn)第6章)。3.4基本數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換有兩種方式:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。但是需要說(shuō)明的是,無(wú)論是自動(dòng)類型轉(zhuǎn)換還是強(qiáng)制類型轉(zhuǎn)換,都僅僅是為了本次運(yùn)算或賦值的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行一次性的、臨時(shí)性的轉(zhuǎn)換,并沒(méi)有改變變量本身的數(shù)據(jù)類型。
3.4.1自動(dòng)類型轉(zhuǎn)換C語(yǔ)言允許在整型、單精度浮點(diǎn)型和雙精度浮點(diǎn)型數(shù)據(jù)之間進(jìn)行混合運(yùn)算,其轉(zhuǎn)換規(guī)則如圖3.3所示。圖中橫向箭頭體現(xiàn)了“必定轉(zhuǎn)換”原則。表示float型向double型的轉(zhuǎn)換和char/short型向int型的轉(zhuǎn)換是必須要進(jìn)行的(即不管運(yùn)算對(duì)象是否為不同的類型,這種轉(zhuǎn)換都要進(jìn)行);縱向箭頭體現(xiàn)了當(dāng)運(yùn)算對(duì)象為不同類型時(shí)的“就高不就低”的轉(zhuǎn)換原則。double←float↑long↑unsigned↑int←char/short高低圖3.3自動(dòng)轉(zhuǎn)換規(guī)則3.4.2強(qiáng)制類型轉(zhuǎn)換利用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符可以將一個(gè)表達(dá)式轉(zhuǎn)換成所需的數(shù)據(jù)類型。格式:(類型說(shuō)明符)表達(dá)式功能:將表達(dá)式的值強(qiáng)制轉(zhuǎn)換為“類型說(shuō)明符”所指定的數(shù)據(jù)類型。【例如】(double)x
將變量x轉(zhuǎn)換成double型。(int)(x+y)將x+y的和值轉(zhuǎn)換成int型?!咀⒁狻?1)不能將(int)(x+y)寫成(int)x+y,因?yàn)楹笳呤菍進(jìn)行了強(qiáng)制類型轉(zhuǎn)換,再與y相加。(2)強(qiáng)制類型轉(zhuǎn)換一般用于自動(dòng)類型轉(zhuǎn)換不能達(dá)到目的的時(shí)候。3.5運(yùn)算符和表達(dá)式3.5.1運(yùn)算符和表達(dá)式概述運(yùn)算符和運(yùn)算對(duì)象(操作數(shù))按一定的規(guī)則結(jié)合在一起就構(gòu)成了表達(dá)式,表達(dá)式中的操作數(shù)可以是常量、變量或子表達(dá)式。表達(dá)式是有類型的,表達(dá)式的類型是由表達(dá)式最終計(jì)算出的值的類型決定的。C語(yǔ)言的運(yùn)算符按其在運(yùn)算表達(dá)式中與運(yùn)算對(duì)象的關(guān)系可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符,它們分別對(duì)一個(gè)、兩個(gè)或三個(gè)運(yùn)算對(duì)象進(jìn)行處理。3.5.2算術(shù)運(yùn)算符與算術(shù)表達(dá)式3.5.2.1雙目算術(shù)運(yùn)算符雙目算術(shù)運(yùn)算符包括加法(+)、減法(-)、乘法(*)、除法(/)、求余(%)(又稱模運(yùn)算)。它們都為雙目運(yùn)算符,具有左結(jié)合性。對(duì)于除法運(yùn)算來(lái)講,當(dāng)參與運(yùn)算的量均為整型時(shí),結(jié)果也為整型,自動(dòng)舍去小數(shù)。當(dāng)參與運(yùn)算的量中只要有一個(gè)為實(shí)型數(shù)據(jù),則結(jié)果為雙精度實(shí)型。對(duì)于求余運(yùn)算來(lái)講要求參與運(yùn)算的量均為整型數(shù)據(jù)(或字符型數(shù)據(jù),還可以為枚舉類型數(shù)據(jù))。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù),且符號(hào)與被除數(shù)的符號(hào)相同?!菊f(shuō)明】(1)結(jié)合性是指在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同時(shí)進(jìn)行運(yùn)算的結(jié)合方向(先后順序)。(2)所有算術(shù)運(yùn)算符都可以對(duì)字符型數(shù)據(jù)、枚舉類型數(shù)據(jù)進(jìn)行運(yùn)算。(3)“-”號(hào)也可以作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算符,具有右結(jié)合性。如-x,-5等。3.5.2.2單目算術(shù)運(yùn)算符自增、自減運(yùn)算符為單目算術(shù)運(yùn)算符,即對(duì)一個(gè)運(yùn)算對(duì)象施加運(yùn)算,運(yùn)算結(jié)果仍賦予該對(duì)象,參與運(yùn)算的對(duì)象必須是變量,具有右結(jié)合性,它是C語(yǔ)言特有的且使用頻率極高,詳見(jiàn)表3.3。【說(shuō)明】(1)自增、自減運(yùn)算符只能運(yùn)用于簡(jiǎn)單變量。常量和表達(dá)式是不能做這兩種運(yùn)算的。如123++、(x+y)++都是不合法的。(2)++x和x++是有區(qū)別的。前者是在使用變量x之前先自身加1,再使用x;而后者是在使用變量x之后,再自身加1。(3)--x和x--是有區(qū)別的。前者是在使用變量x之前先自身減1,再使用x;而后者是在使用變量x之后,再自身減1。(4)自增、自減運(yùn)算的結(jié)果與系統(tǒng)有關(guān),在使用時(shí)無(wú)統(tǒng)一規(guī)定,要具體分析。3.5.2.3算術(shù)表達(dá)式用括號(hào)、算術(shù)運(yùn)算符和運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的符合C語(yǔ)法規(guī)則的式子稱為算術(shù)表達(dá)式。運(yùn)算對(duì)象可以是常量、變量和函數(shù)等。3.5.3賦值運(yùn)算符與賦值表達(dá)式3.5.3.1賦值運(yùn)算符1.簡(jiǎn)單賦值運(yùn)算符等號(hào)“=”就是簡(jiǎn)單賦值運(yùn)算符,它是一個(gè)雙目運(yùn)算符,具有右結(jié)合性。賦值號(hào)的左邊只能是變量,而不允許是算術(shù)表達(dá)式或常量。格式:<變量名>=<表達(dá)式>功能:將表達(dá)式的值賦給變量名?!咀⒁狻慨?dāng)賦值運(yùn)算符兩側(cè)的運(yùn)算對(duì)象的數(shù)據(jù)類型不同時(shí),在賦值兼容的前提下,系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換(即把賦值運(yùn)算符右邊的數(shù)據(jù)類型轉(zhuǎn)換為賦值運(yùn)算符左邊的數(shù)據(jù)類型)。否則就是賦值不兼容,此時(shí)應(yīng)做強(qiáng)制類型轉(zhuǎn)換(不然將出錯(cuò))。2.復(fù)合賦值運(yùn)算符在簡(jiǎn)單賦值運(yùn)算符(“=”)的前面加上一個(gè)雙目運(yùn)算符(算術(shù)運(yùn)算符或位運(yùn)算符)后就構(gòu)成了復(fù)合賦值運(yùn)算符,使用復(fù)合賦值運(yùn)算符不但書寫簡(jiǎn)潔,而且產(chǎn)生的代碼短,運(yùn)行速度也快。格式:<變量名><雙目運(yùn)算符>=<表達(dá)式>功能:等價(jià)于<變量名>=<變量名><雙目運(yùn)算符><表達(dá)式>【說(shuō)明】(1)復(fù)合運(yùn)算符有:+=,-=,*=,/=,%=, <<=,>>=,&=,^=,|=(2)當(dāng)復(fù)合運(yùn)算符右側(cè)是一個(gè)表達(dá)式時(shí),由C語(yǔ)言編譯系統(tǒng)給該表達(dá)式自動(dòng)加括號(hào),即先計(jì)算這個(gè)表達(dá)式的值,再進(jìn)行復(fù)合賦值運(yùn)算。3.5.3.2賦值表達(dá)式格式:<變量名><賦值運(yùn)算符|復(fù)合賦值運(yùn)算符><表達(dá)式>功能:賦值表達(dá)式的值就是變量的最終值。3.5.4關(guān)系運(yùn)算符與關(guān)系表達(dá)式3.5.4.1關(guān)系運(yùn)算符關(guān)系運(yùn)算符用來(lái)測(cè)試兩個(gè)操作數(shù)之間的關(guān)系。C語(yǔ)言中的關(guān)系運(yùn)算符均為雙目運(yùn)算符:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于),前四個(gè)的優(yōu)先級(jí)相同且高于后兩個(gè)的優(yōu)先級(jí)(后兩個(gè)的優(yōu)先級(jí)相同)。關(guān)系運(yùn)算符主要用在條件語(yǔ)句中,其結(jié)果為邏輯值(或稱為布爾值),如果比較后關(guān)系式成立,則稱之為“真”(結(jié)果為非0),如果比較后關(guān)系式不成立,則稱之為“假”(結(jié)果為0)。3.5.4.2關(guān)系表達(dá)式關(guān)系表達(dá)式就是用關(guān)系運(yùn)算符將兩個(gè)任意類型的表達(dá)式連接起來(lái)的符合C語(yǔ)言語(yǔ)法規(guī)則的式子,其結(jié)果為邏輯值。如果比較后關(guān)系式成立,則稱之為“真”(結(jié)果為非0),如果比較后關(guān)系式不成立,則稱之為“假”(結(jié)果為0)?!咀⒁狻俊?=”和“=”是兩種完全不同的運(yùn)算符,前者為關(guān)系運(yùn)算符中的相等運(yùn)算符,后者為賦值運(yùn)算符。3.5.5邏輯運(yùn)算符與邏輯表達(dá)式3.5.5.1邏輯運(yùn)算符C語(yǔ)言中的邏輯運(yùn)算符有與、或、非三個(gè),如表3.4所示。3.5.5.2邏輯表達(dá)式由邏輯運(yùn)算符連接運(yùn)算對(duì)象所構(gòu)成的符合C語(yǔ)言語(yǔ)法規(guī)則的式子稱為邏輯表達(dá)式,由于C語(yǔ)言中并沒(méi)有邏輯類型的數(shù)據(jù),只是用非0表示“真”,用0表示“假”,所以邏輯表達(dá)式中的操作對(duì)象可以是任意合法的表達(dá)式或常量?!菊f(shuō)明】(1)對(duì)于邏輯與運(yùn)算,如果第一個(gè)操作對(duì)象被判定為“假”,系統(tǒng)將不再判定或求解第二個(gè)操作對(duì)象。(2)對(duì)于邏輯或運(yùn)算,如果第一個(gè)操作對(duì)象被判定為“真”,系統(tǒng)將不再判定或求解第二個(gè)操作對(duì)象。(3)可以用多個(gè)邏輯運(yùn)算符組合成更為復(fù)雜的組合關(guān)系表達(dá)式。如:x>2&&y>3&&z>9&&k>8和(a>=11&&b>22)||c==0等。(4)在數(shù)學(xué)上形式為10≤X≤20的式子,在C語(yǔ)言中不可以寫成10<=X<=20,而只能寫成10<=X&&X<=20,其余類似。3.5.6條件運(yùn)算符與條件表達(dá)式條件運(yùn)算符是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符,它由兩個(gè)符號(hào)“?”和“:”組成。由條件運(yùn)算符把三個(gè)運(yùn)算對(duì)象連接在一起形成的式子稱為條件表達(dá)式。格式:表達(dá)式1?表達(dá)式2:表達(dá)式3功能:根據(jù)表達(dá)式1的真假來(lái)決定整個(gè)條件表達(dá)式的取值。3.5.7逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式逗號(hào)運(yùn)算符“,”是一種特殊的運(yùn)算符,也稱為順序求值運(yùn)算符,它的作用就是把多個(gè)表達(dá)式連接起來(lái)。用逗號(hào)運(yùn)算符連接起來(lái)的式子稱為逗號(hào)表達(dá)式。格式:表達(dá)式1,表達(dá)式2,…,表達(dá)式n功能:按照從左到右的順序逐個(gè)求解表達(dá)式,而整個(gè)逗號(hào)表達(dá)式的值就是表達(dá)式n的值?!菊f(shuō)明】(1)逗號(hào)運(yùn)算符具有左結(jié)合性。(2)在許多情況下,使用逗號(hào)表達(dá)式的目的只是想分別得到各個(gè)表達(dá)式的值,而并非一定需要得到和使用整個(gè)逗號(hào)表達(dá)式的值。(3)逗號(hào)運(yùn)算符和那些在同時(shí)定義的幾個(gè)變量(或函數(shù)調(diào)用的幾個(gè)參數(shù))之間起分隔作用的逗號(hào)是兩個(gè)完全不同的概念。3.5.8位運(yùn)算符與位運(yùn)算表達(dá)式前面介紹的各種運(yùn)算都是以字節(jié)作為最基本的運(yùn)算單位進(jìn)行的,但是在很多系統(tǒng)程序中卻常常要求對(duì)位(bit)進(jìn)行運(yùn)算或處理,位運(yùn)算適用于整型、字符型、枚舉型數(shù)據(jù)對(duì)象。C語(yǔ)言提供了位運(yùn)算的功能,當(dāng)操作數(shù)為負(fù)數(shù)時(shí)是用補(bǔ)碼來(lái)表示的;這使得C語(yǔ)言也能像匯編語(yǔ)言一樣用來(lái)編寫系統(tǒng)程序。C語(yǔ)言提供了六種位運(yùn)算符:~(按位求反),<<(按位左移),>>(按位右移),&(按位與),^(按位異或),|(按位或)。優(yōu)先級(jí)從前到后為“高->低”(其中<<和>>優(yōu)先級(jí)相同)。3.5.8.1按位與運(yùn)算格式:操作數(shù)1&操作數(shù)2功能:對(duì)參與運(yùn)算的兩個(gè)操作數(shù)各對(duì)應(yīng)的二進(jìn)制位作與運(yùn)算?!菊f(shuō)明】(1)按位與運(yùn)算符"&"為雙目運(yùn)算符。(2)只有對(duì)應(yīng)的兩個(gè)二進(jìn)制位均為1時(shí),結(jié)果位才為1,否則為0。(3)按位與運(yùn)算常用來(lái)對(duì)某一數(shù)據(jù)的指定位清0。方法就是讓該數(shù)據(jù)與某一常數(shù)相與,這一常數(shù)應(yīng)滿足:清0的位置0,其余位置1。(4)按位與運(yùn)算常用來(lái)獲取指定某一數(shù)據(jù)的指定位。方法就是讓該數(shù)據(jù)與某一常數(shù)相與,這一常數(shù)應(yīng)滿足:獲取的位置1,其余位置0。(5)按位與運(yùn)算常用來(lái)測(cè)試指定的位為1或?yàn)?。方法就是讓被測(cè)試的位與1相與,其它位與0相與;然后判斷結(jié)果,如果結(jié)果為0,則被測(cè)位為0,如果結(jié)果為非0,則被測(cè)位為1。3.5.8.2按位或運(yùn)算格式:操作數(shù)1|操作數(shù)2功能:對(duì)參與運(yùn)算的兩個(gè)操作數(shù)各對(duì)應(yīng)的二進(jìn)制位作或運(yùn)算?!菊f(shuō)明】(1)按位或運(yùn)算符“|”是雙目運(yùn)算符。(2)只要對(duì)應(yīng)的兩個(gè)二進(jìn)制位中有一個(gè)為1時(shí),結(jié)果位就為1,否則為0。(3)按位或運(yùn)算常用來(lái)對(duì)某一數(shù)據(jù)的指定位置1,其余位不變。方法就是讓該數(shù)據(jù)與某一常數(shù)相或,這一常數(shù)應(yīng)滿足:置1的位置1,其余的位置0。3.5.8.3按位異或運(yùn)算格式:操作數(shù)1^操作數(shù)2功能:對(duì)參與運(yùn)算的兩個(gè)操作數(shù)各對(duì)應(yīng)的二進(jìn)制位作異或運(yùn)算?!菊f(shuō)明】(1)按位異或運(yùn)算符“^”是雙目運(yùn)算符。(2)只要對(duì)應(yīng)的兩個(gè)二進(jìn)制位相異時(shí),結(jié)果就為1,否則為0。(3)按位異或運(yùn)算通常用來(lái)對(duì)某一數(shù)據(jù)的指定位取反。方法就是讓該數(shù)據(jù)與某一常數(shù)相異或,這一常數(shù)應(yīng)滿足:取反的位置1,其余位置0。3.5.8.4按位取反運(yùn)算格式:~操作數(shù)功能:對(duì)參與運(yùn)算的數(shù)據(jù)的各二進(jìn)制位按位取反。【說(shuō)明】(1)按位取反運(yùn)算符“~”為單目運(yùn)算符,具有右結(jié)合性。(2)按位取反運(yùn)算不能理解為簡(jiǎn)單的加“-”號(hào),其結(jié)果有時(shí)不可顯示。3.5.8.5按位左移運(yùn)算格式:操作數(shù)<<左移位數(shù)功能:把“<<”號(hào)左邊的操作數(shù)的各二進(jìn)制位全部左移若干位(由“左移位數(shù)”指定),高位(左邊)丟棄,低位(右邊)補(bǔ)0。【說(shuō)明】(1)左移運(yùn)算符“<<”為雙目運(yùn)算符。(2)將操作數(shù)左移n位相當(dāng)于該數(shù)乘以2n。如“3<<2=12”,即相當(dāng)于3乘了4。(3)上述(2)的結(jié)論只適用于該數(shù)據(jù)左移時(shí),被移出的高位數(shù)中不包含1的情況,若高位中包含1,就不再具有乘以2的關(guān)系了。(4)左移運(yùn)算比乘法運(yùn)算快得多,有些C編譯程序自動(dòng)將乘2的運(yùn)算用左移一位來(lái)實(shí)現(xiàn),將乘2n的冪運(yùn)算處理為左移n位。3.5.8.6按位右移運(yùn)算格式:操作數(shù)>>右移位數(shù)功能:把“>>”號(hào)左邊的操作數(shù)的各二進(jìn)制位全部右移若干位(由“右移位數(shù)”指定),低位(右邊)丟棄,高位(左邊)補(bǔ)0。【說(shuō)明】(1)按位右移運(yùn)算符“>>”是雙目運(yùn)算符。(2)將操作數(shù)右移n位相當(dāng)于該數(shù)除以2n。如“60>>2=15”,即相當(dāng)于60除了4。(3)上述(2)的結(jié)論只適用于該數(shù)據(jù)右移時(shí)被移出的低位數(shù)中不包含1的情況,若低位中包含1,就不再具有除以2的關(guān)系了。(4)右移運(yùn)算比除法運(yùn)算快得多,有些C編譯程序自動(dòng)將除2的運(yùn)算用右移一位來(lái)實(shí)現(xiàn),將除2n的冪運(yùn)算處理為右移n位?!咀⒁狻繉?duì)于有符號(hào)操作數(shù),在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)操作數(shù)為正數(shù)時(shí),符號(hào)位為0,最高位補(bǔ)0;當(dāng)操作數(shù)為負(fù)數(shù)時(shí),符號(hào)位為1,最高位是補(bǔ)0或是補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。補(bǔ)0時(shí)稱為“邏輯右移”,補(bǔ)1時(shí)稱為“算術(shù)右移”。3.5.8.7位運(yùn)算的復(fù)合賦值運(yùn)算類似于算術(shù)運(yùn)算的復(fù)合運(yùn)算符,位運(yùn)算符和賦值運(yùn)算符也可以構(gòu)成“復(fù)合賦值運(yùn)算符”,如表3.8所示。3.5.9取長(zhǎng)度運(yùn)算符取長(zhǎng)度運(yùn)算符是單目運(yùn)算符,其運(yùn)算對(duì)象可以是任何數(shù)據(jù)類型名或變量。格式:sizeof(類型名|表達(dá)式)功能:取出類型名或表達(dá)式的長(zhǎng)度?!咀⒁狻浚?)上述結(jié)果會(huì)因機(jī)器不同而有所不同。(2)運(yùn)算對(duì)象必須用圓括號(hào)括住?!菊f(shuō)明】長(zhǎng)度運(yùn)算符和單目算術(shù)運(yùn)算符、單目邏輯運(yùn)算符、增1、減1運(yùn)算符優(yōu)先級(jí)別相同。3.5.10運(yùn)算符的優(yōu)先級(jí)和結(jié)合性3.5.10.1運(yùn)算符的優(yōu)先級(jí)在復(fù)雜表達(dá)式中,通過(guò)運(yùn)算符的優(yōu)先級(jí)確定各種運(yùn)算符的執(zhí)行順序。C語(yǔ)言中的運(yùn)算符優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在進(jìn)行表達(dá)式運(yùn)算時(shí),優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。而在一個(gè)運(yùn)算量?jī)蓚?cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理,詳細(xì)情況見(jiàn)附錄B。3.5.10.2運(yùn)算符的結(jié)合性在C語(yǔ)言中,各運(yùn)算符的結(jié)合性分為兩種:即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右(即先左后右)。如有表達(dá)式x-y+z則y應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。C語(yǔ)言運(yùn)算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯(cuò)誤。【說(shuō)明】(1)所有操作符(除一元操作符和?之外)都具有左結(jié)合性。(2)一元操作符(*,&和-)及操作符“?”則具有右結(jié)合性。(3)同級(jí)運(yùn)算符的結(jié)合性是自右向左的。應(yīng)用舉例【例3.24】理解下列各錯(cuò)誤常量的寫法。(1)089123非法十進(jìn)制(因?yàn)橐?開(kāi)頭);又非八進(jìn)制(因?yàn)橛袛?shù)字8、9)。(2)0x12mn非法十六進(jìn)制(因?yàn)橛蟹欠ㄗ帜竚、n)。(3)123abc非法十進(jìn)制(含有字母abc),又非十六進(jìn)制(不是以0x開(kāi)頭)?!纠?.25】寫出下列各數(shù)學(xué)式子的C語(yǔ)言表達(dá)式形式。(1)Sin800=sin(80*3.1415926/180),(2)arccos(x+y)=acos(x+y)(3)tg(arctg(66÷98)-arctg(33÷68))=tan(atan((double)66/98)-atan((double)33/68))(4)xy-e22=pow(x,y)-exp(22)(5)=sqrt(3.1415926)(6)(1+r÷n)n-1=pow((1+r/n),n)-1(7)ln((a-1)÷(b-1))=log((a-1.0)/(b-1.0));(8)(sinx)3.6=pow(sin(x),3.6);(x為弧度)【例3.26】理解下列為變量進(jìn)行初始化的例子。(1)inti=369,k=800;/*定義整型變量i、k,并賦初值*/(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智能農(nóng)業(yè)設(shè)備租賃合同范本3篇
- 二零二五年度促銷員健康管理與保障合同4篇
- 二零二五年度智能家居瓷磚鋪裝服務(wù)合同4篇
- 2025年度個(gè)人汽車租賃及GPS定位服務(wù)合同3篇
- 桶裝水企業(yè)戰(zhàn)略合作協(xié)議(2025版)2篇
- 二零二五年度公司慶典活動(dòng)創(chuàng)意策劃與實(shí)施合同3篇
- 二零二五年度新型材料幕墻安裝勞務(wù)分包合同范本4篇
- 二零二五年度跨境電商平臺(tái)供應(yīng)商服務(wù)合同4篇
- 2025年度個(gè)人住房貸款保證合同個(gè)人貸款信息共享與查詢合同4篇
- 二零二五版智能暖通控制系統(tǒng)研發(fā)與集成合同3篇
- 2024公路瀝青路面結(jié)構(gòu)內(nèi)部狀況三維探地雷達(dá)快速檢測(cè)規(guī)程
- 2024年高考真題-地理(河北卷) 含答案
- 中國(guó)高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學(xué)試卷
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 《思想道德與法治》課程教學(xué)大綱
- 2024光儲(chǔ)充一體化系統(tǒng)解決方案
- 2024年全國(guó)高考新課標(biāo)卷物理真題(含答案)
- 處理后事授權(quán)委托書
- 食材配送服務(wù)方案投標(biāo)方案(技術(shù)方案)
- 足療店?duì)I銷策劃方案
評(píng)論
0/150
提交評(píng)論