計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)_第1頁(yè)
計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)_第2頁(yè)
計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)_第3頁(yè)
計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)_第4頁(yè)
計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、計(jì)算機(jī)軟考程序員備考程序設(shè)計(jì)知識(shí)點(diǎn)(2)2.1C語(yǔ)言的數(shù)據(jù)類型數(shù)據(jù)類型包含兩方面的內(nèi)容:數(shù)據(jù)的表示和對(duì)數(shù)據(jù)加工的操作。數(shù)據(jù)的全部可能表示構(gòu)成數(shù)據(jù)類型的值的集合。數(shù)據(jù)全部合理的操作構(gòu)成數(shù)據(jù)類型的操作集合。在C語(yǔ)言中,把整型、實(shí)型和字符型稱為基本數(shù)據(jù)類型,又稱整型和實(shí)型為數(shù)值型。為了描述更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),C語(yǔ)言還有構(gòu)造類型、指針類型、放舉類型和空類型。構(gòu)造類型是指由若干個(gè)相關(guān)的數(shù)據(jù)組合在一起形成的一種復(fù)雜數(shù)據(jù)類型。1.整型整型數(shù)據(jù)按其存儲(chǔ)在內(nèi)存中的二進(jìn)位信息的最高位是當(dāng)作數(shù)值信息位還是當(dāng)作數(shù)據(jù)的符號(hào)位,將整型數(shù)據(jù)分成帶符號(hào)整型和無(wú)符號(hào)整型兩種。每種整型又按所需的字節(jié)個(gè)數(shù)的多少分成三種。所以整型共有

2、6種:帶符號(hào)整型(int)、帶符號(hào)短整型(short int)、帶符號(hào)長(zhǎng)整型(long int,或 long)、無(wú)符號(hào)整型(unsigned int)、無(wú)符號(hào)短整型(unsigned short int)以無(wú)符號(hào)長(zhǎng)整型(unsigned long)。2.實(shí)型實(shí)型數(shù)據(jù)有表示范圍和精度兩個(gè)不同的特征,為了適應(yīng)數(shù)的范圍和精度的不同要求,實(shí)型數(shù)據(jù)分三種類型:?jiǎn)尉刃?也稱浮點(diǎn)型 float)、雙精度型(double)、長(zhǎng)雙精度型(long double)。3.構(gòu)造類型構(gòu)造類型是指由若干個(gè)相關(guān)的數(shù)據(jù)組合在一起形成的一種復(fù)雜數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型的成分?jǐn)?shù)據(jù)可以是基本數(shù)據(jù)類型的,也可以是別的構(gòu)造類型的。按構(gòu)

3、造方式和構(gòu)造要求區(qū)分,構(gòu)造類型主要有數(shù)組類型、結(jié)構(gòu)類型和共用類型。數(shù)組類型是由相同類型的數(shù)據(jù)組成;結(jié)構(gòu)類型可以由不同類型的數(shù)據(jù)組成;當(dāng)不同數(shù)據(jù)類型不會(huì)同時(shí)使用時(shí),以節(jié)約內(nèi)存,讓不同數(shù)據(jù)占用同一區(qū)域,這就是共用類型。4.指針類型指針類型是取程序?qū)ο?如變量)在內(nèi)存中占居的地址為值的一種特殊的數(shù)據(jù)類型。5.枚舉類型當(dāng)變量只取很少幾種可能的值,并分別用標(biāo)識(shí)符對(duì)值命名時(shí),這種變量的數(shù)據(jù)類型可用枚舉類型來(lái)表示。如變量表示一個(gè)星期中的某一天,就可用校舉類型描述該變量的類型,并以星期見(jiàn)的英文名對(duì)日期命名,對(duì)應(yīng)的變量取某日的星期名稱為其值。6.void類型用保留字VOid表示的數(shù)據(jù)類型有兩種完全相反的意思,或

4、表示沒(méi)有數(shù)據(jù)(沒(méi)有結(jié)果、沒(méi)有形式參數(shù)),或表示某種任意類型的數(shù)據(jù)(如又與指針結(jié)合,用 void。標(biāo)記)。 void表示空類型,void。表示任意數(shù)據(jù)的指針類型,程序如要使用 void。類型的數(shù)據(jù),應(yīng)該將它強(qiáng)制地轉(zhuǎn)換成某種具體的指針類型。2.2 常量常量是指程序運(yùn)行過(guò)程中其值不可改變的數(shù)據(jù)。常量按其值的表現(xiàn)形式可分為如下類型:整型常量、實(shí)型常量、字符型常量、字符串常量和指針常量。1.整型常量C語(yǔ)言整型常量的書(shū)寫(xiě)形式有三種:(1)十進(jìn)制整數(shù)。通常整數(shù)的寫(xiě)法,如0,123,-45,+25。(2)八進(jìn)制整數(shù)。以數(shù)字符0開(kāi)頭并由數(shù)字符0-7組成的數(shù)字符序列,為八進(jìn)制整數(shù)。如 0123表示八進(jìn)制整數(shù),其值

5、等于十進(jìn)制整數(shù) l*8*8+2*8+3=83。(3)十六進(jìn)制整數(shù)。十六進(jìn)制整數(shù)以O(shè)X(或OX)開(kāi)頭的整數(shù)。表示十六進(jìn)制數(shù)的數(shù)字將有16個(gè),它們分別是0-9和A、B、C、D、E、F,其中六個(gè)英文字母也可以小寫(xiě)。例如,0x123表示十六進(jìn)制整數(shù),其值等于十進(jìn)制整數(shù)1*16*16+2*16+3=291; oxabc,其值等于10*16*16+11+16+12=2748。整型常量也可在整數(shù)之后接上字母L(或l),特別指明它是 long型的。整型常量也可在整數(shù)之后接上字母U(或u),特別指明是不帶符號(hào)的,即是unsigned型的。為指明不帶符號(hào)的long型整型常量,則需在整數(shù)之后同時(shí)加上字母U和L,表明

6、該整型常量是unsigned long型的。整型數(shù)據(jù)以二進(jìn)制形式存放,要求短整型數(shù)據(jù)的字節(jié)數(shù)不能大于整型數(shù)據(jù)的字節(jié)數(shù);整型數(shù)據(jù)的字節(jié)數(shù)不能大于長(zhǎng)整型數(shù)據(jù)的字節(jié)數(shù)。對(duì)于帶符號(hào)的整數(shù),用二進(jìn)制代碼的最左二進(jìn)位作為數(shù)的符號(hào),1表示負(fù)數(shù),0表示正數(shù)。2.實(shí)型常量C語(yǔ)言實(shí)型常量的一般書(shū)寫(xiě)格式是:正負(fù)號(hào) 整數(shù)部分.小數(shù)部分 指數(shù)部分其中,正負(fù)號(hào)可有可無(wú),無(wú)正負(fù)號(hào)即為正實(shí)數(shù);整數(shù)部分和小數(shù)部分都是十進(jìn)數(shù)字符序列;指數(shù)部分是e(或E)后接上正負(fù)號(hào)(正號(hào)可有可無(wú))和十進(jìn)數(shù)字符序列。按上述格式書(shū)寫(xiě)實(shí)型常量,另有兩條限制:(l)整數(shù)部分和小數(shù)部分可以任選,但不可同時(shí)都沒(méi)有。(2)小數(shù)點(diǎn)和指數(shù)部分不可以同時(shí)都沒(méi)有。A

7、NSIC引入兩個(gè)后綴字符,用 f標(biāo)識(shí) float型實(shí)型常量,用 1(或 L)標(biāo)識(shí) fong double型實(shí)型常量,而無(wú)后綴符的實(shí)型常量被認(rèn)為是double型的實(shí)型常量。要注意實(shí)型常量的有效位數(shù),不要以為寫(xiě)上的數(shù)字都能被計(jì)算機(jī)所接受。在大多數(shù)C系統(tǒng)中,一個(gè)float型實(shí)型數(shù)據(jù)在內(nèi)存中占用4個(gè)字節(jié)(32個(gè)二進(jìn)位),約7個(gè)十進(jìn)位有效數(shù)字,能表示絕對(duì)值最接近0的實(shí)數(shù)約為10的-38次方,最大的實(shí)數(shù)約為10的38次方。例如,對(duì)于代碼 float x=.123f,在大多數(shù)系統(tǒng)中,實(shí)型常量.123f的最后兩位數(shù)字是無(wú)效的。double型實(shí)型數(shù)據(jù)占用8個(gè)字節(jié)(64個(gè)二進(jìn)位),約15個(gè)十進(jìn)位有效數(shù)字,能表示絕

8、對(duì)值最接近0的實(shí)數(shù)約為10的一308次方,最大的實(shí)數(shù)約為10的308次方。3.字符常量字符型數(shù)據(jù)用于表示一個(gè)字符值,但字符型數(shù)據(jù)的內(nèi)部表示是字符的ASCll代碼(8位二進(jìn)位的二進(jìn)制形式)。字符型數(shù)據(jù)的類型符用char來(lái)標(biāo)記。字符型常量的書(shū)寫(xiě)方法:(l)普通字符-用單引號(hào)括起一個(gè)字符。如a、b、B、$。(2)特殊字符-用字符或字符列采標(biāo)記。這種標(biāo)記方法有三種:特定字符,標(biāo)記特定控制符,如換行符用 n來(lái)標(biāo)記。 1至3個(gè)人進(jìn)制數(shù)字,以人進(jìn)數(shù)表示字符的ASCll代碼。 X1至2個(gè)十六進(jìn)制數(shù)字符,以十六進(jìn)制數(shù)表示字符的 ASCll代碼。由于字符以代碼存放,所以也可把字符值當(dāng)作一個(gè)小整數(shù)。反之,一個(gè)小整數(shù)

9、也可把它理解為是某個(gè)字符的代碼,把它當(dāng)作一個(gè)字符。4.字符串常量字符串常量用來(lái)表示一個(gè)字符序列,它的書(shū)寫(xiě)方法用雙引號(hào)括住字符序列。例如:”ABC”、”等。字符串常量“”是一個(gè)空字符串,即不含任何有效字符的字符串。字符串?dāng)?shù)據(jù)順序存儲(chǔ)字符串字符的ASCll代碼,并在最后字符后面存儲(chǔ)一個(gè)H進(jìn)制代碼全為0的特殊字符,用來(lái)標(biāo)記字符串的結(jié)束。所以字符串常量“1234”在內(nèi)存占5個(gè)字節(jié),而空字符串只占一個(gè)字節(jié)。字符串中的字符也可以是轉(zhuǎn)義字符。5.符號(hào)常量為了提高程序的可讀性,常量可以用以下形式命名:# define 標(biāo)識(shí)符 常量其中的標(biāo)識(shí)符也稱作符號(hào)常量,這里的常量是前面所述的某種常量、或是程序中前面定義的

10、符號(hào)常量。例如:# define MAXN 100 2.3 變量變量是程序執(zhí)行時(shí),其值允許改變的數(shù)據(jù)對(duì)象,用來(lái)存儲(chǔ)輸入數(shù)據(jù)、計(jì)算的中間結(jié)果和程序的最終結(jié)果等。1.變量定義變量用標(biāo)識(shí)符命名,通過(guò)變量定義引入的變量名習(xí)慣用英文字母開(kāi)頭,C系統(tǒng)可能也會(huì)預(yù)定義一些標(biāo)記系統(tǒng)特性的變量,系統(tǒng)定義的變量習(xí)慣用下線字符開(kāi)頭。變量的數(shù)據(jù)特性由變量定義時(shí)指定的類型確定。若定義指定數(shù)據(jù)類型的變量(即不在指定數(shù)據(jù)類型基礎(chǔ)上定義新數(shù)據(jù)類型的變量,如指定類型的指針、數(shù)組等),這種變量定義的句法為:數(shù)據(jù)類型符變量名1,變量名2,;編繹系統(tǒng)根據(jù)變量的數(shù)據(jù)類型確定存放它的值所需要的內(nèi)存字節(jié)數(shù),變量值的內(nèi)部表示形多也由其類型確定

11、。2.內(nèi)部變量和外部變量變量按其定義出現(xiàn)在程序中的位置不同分成兩類:在函數(shù)內(nèi)定義的變量稱為內(nèi)部變量,而在函數(shù)之外(函數(shù)之間)定義的變量稱為外部變量。3.變量的存儲(chǔ)類型系統(tǒng)按程序?qū)τ?jì)算機(jī)存儲(chǔ)空間使用的不同要求,將內(nèi)存分成不同用途的塊,與計(jì)算機(jī)的寄存器一起將存儲(chǔ)空間分成不同類別。而C程序通過(guò)指定變量的存儲(chǔ)類表明變量的不同的使用要求,讓系統(tǒng)將變量分配于不同的內(nèi)存塊或寄存器。如在上述變量定義形式中,還要指定變量的存儲(chǔ)類型,變量定義的形式為:存儲(chǔ)類型符數(shù)據(jù)類型符變量名1,變量名2,;其中存儲(chǔ)類型有四種: auto(自動(dòng)的)、static(靜態(tài)的)、register寄存器的)和 extem外部的)。外部變

12、量只允許被指定為靜態(tài)的,或不指定其存儲(chǔ)類型。內(nèi)部變量可以被指定為自動(dòng)的或靜態(tài)的、或寄存器的、或不指定存儲(chǔ)類型,若不指定存儲(chǔ)類型,它就是自動(dòng)的。自動(dòng)變量是內(nèi)部變量,在函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)定義,它們被分配在堆棧區(qū)。靜態(tài)變量可以是內(nèi)部變量,也可以是外部變量。靜態(tài)變量表示永久性和專用性,即在程序執(zhí)行過(guò)程中一直存在,局限于定義它的函數(shù)(內(nèi)部靜態(tài)變量)或局限于定義它的程序文件中那些函數(shù)(外部靜態(tài)變量)。靜態(tài)變量被分配在與程序相聯(lián)的內(nèi)存數(shù)據(jù)區(qū)。寄存器變量是函數(shù)的內(nèi)部變量或參數(shù),也是一種臨時(shí)性的變量。如因函數(shù)使用非常頻繁程序希望將它分配在寄存器,程序就可將變量指定為寄存器的,但編譯系統(tǒng)也可能把它當(dāng)作動(dòng)變量處理。

13、指定存儲(chǔ)類型是外部的,實(shí)際b是告訴編譯器,這個(gè)變量是一個(gè)外部變量,在這里要使它,而它的定義或在別的程序文件或在后面的程序段等別的地方。4.變量的作用域和生存期變量的使用要注意變量的作用域(可使用范圍)和生存期(存在的時(shí)間)。C語(yǔ)言規(guī)定,內(nèi)部變量的作用域只局限于定義它的函數(shù)或復(fù)合語(yǔ)句。自動(dòng)的內(nèi)部變量是一種臨時(shí)性變量,函數(shù)被調(diào)用時(shí)分配,函數(shù)執(zhí)行結(jié)束時(shí)釋放。而靜態(tài)變量在程序執(zhí)行前分配,直至程序結(jié)束才釋放。由于靜態(tài)的內(nèi)部變量在函數(shù)結(jié)束時(shí),依舊保持存儲(chǔ),函數(shù)上一次調(diào)用時(shí)留在內(nèi)部靜態(tài)變量中的結(jié)果能被下一次調(diào)用時(shí)繼續(xù)使用。外部變量也在程序啟動(dòng)前分配,直至程序執(zhí)行結(jié)束釋放。普通的外部變量能提供別的源程序文件中

14、的函數(shù)使用(要對(duì)它作外部說(shuō)明);靜態(tài)的外部變量只能供定義它的源程序中的全部函數(shù)專用。由于外部變量能供整個(gè)程序使用,所以外部量不能重名。5.變量定義初始化變量定義是對(duì)變量的存儲(chǔ)空間提出一種要求,存儲(chǔ)空間分配后,變量的初值通常是不拔的。但程序可以要求系統(tǒng)在為變量分配存儲(chǔ)空間同時(shí)為變量設(shè)定初值,這就是變量定義初始化。在變量的定義形式中,在變量名之后接上“=初值表達(dá)式”,該初值表達(dá)式的值就作為該變量的初值。C語(yǔ)言另有約定,對(duì)于靜態(tài)變量和外部變量,若定義它們時(shí)未指定初值,系統(tǒng)給它們?cè)O(shè)置成全部二進(jìn)位都是0的值。以下是各種變量定義的例子:(l)定義整型,并對(duì)其初始化。Short minInt =100;in

15、t i= l,j= 2, k=3;long p=-1L,q=L;unsigned usi= 254u;unsigned long up= UL;(2)定義字符型變量,并對(duì)其初始化。char ch=A;(3)定義實(shí)型(浮點(diǎn)型、雙精度型)變量,并對(duì)其初始化。float f=1.23456f;double d=1.op87654; 2.4 運(yùn)算符每個(gè)運(yùn)算符都代表對(duì)運(yùn)算對(duì)象的某種運(yùn)算,都有自已特定的運(yùn)算規(guī)則,規(guī)定運(yùn)算對(duì)象的個(gè)數(shù)、運(yùn)算對(duì)象數(shù)據(jù)類型,以及運(yùn)算結(jié)果的數(shù)據(jù)類型。C語(yǔ)言還規(guī)定運(yùn)算符有不同的優(yōu)先級(jí)和結(jié)合性。運(yùn)算符的優(yōu)先級(jí)指表達(dá)式求值時(shí),按運(yùn)算符的優(yōu)先級(jí)由高到低的次序計(jì)算。如“先乘除后加減”。運(yùn)算符

16、的結(jié)合性是指運(yùn)算符要求它的運(yùn)算對(duì)象對(duì)它的結(jié)合方向。結(jié)合性確定了在相同優(yōu)先級(jí)運(yùn)算符連續(xù)出現(xiàn)的情況下運(yùn)算對(duì)象與運(yùn)算符結(jié)合的順序,通常也是計(jì)算順序。如算術(shù)運(yùn)算符的結(jié)合性是從左至右的,則連續(xù)的加減或連續(xù)的乘除是從左向右計(jì)算。而賦值運(yùn)算符的結(jié)合性是從右至左的,則連續(xù)的賦值運(yùn)算是從右向左逐個(gè)計(jì)算賦值。在C語(yǔ)言中,要特別注意某些運(yùn)算符因運(yùn)算對(duì)象數(shù)據(jù)類型不同,可能有不同的意義。1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符的運(yùn)算對(duì)象是基本數(shù)據(jù)類型的數(shù)據(jù),實(shí)現(xiàn)通常的取整、取負(fù)、四則運(yùn)算、求兩整數(shù)相除后的余數(shù)的運(yùn)算和增1減1運(yùn)算。特別要留心的是整除運(yùn)算、求余運(yùn)算、增1運(yùn)算和減1運(yùn)算。對(duì)兩個(gè)整型數(shù)據(jù)執(zhí)行除運(yùn)算(/),稱為整除運(yùn)算,要特別

17、注意的是兩個(gè)整型數(shù)據(jù)的整除運(yùn)算的結(jié)果是整型的,如表達(dá)式3/2的結(jié)果為1,表達(dá)式2/3的結(jié)果為0。求余運(yùn)算符(%)要求參與運(yùn)算的兩個(gè)運(yùn)算對(duì)象均為整型數(shù)據(jù),如 5% 3的值為 2。一般來(lái)說(shuō),求余運(yùn)算所得結(jié)果的符號(hào)與被除數(shù)的符號(hào)相同。如-5%3的值為-2,5%-3的值為2。增1(+)和減1(-)運(yùn)算符都是單目運(yùn)算符,以整型、字符型和指針型變量為運(yùn)算對(duì)象,并改變運(yùn)算對(duì)象的值。按它們出現(xiàn)在變量之前和之后兩種不同情況,其作用有微妙的差別。前綴+前綴+的一般形式是+變量例如,若X是整型或某種指針類型的變量,則+X使變量X的值增大1個(gè)單位,并以X的新值作為表達(dá)式“+X”的運(yùn)算結(jié)果。如以下語(yǔ)句執(zhí)行前,變量X的值

18、為1,語(yǔ)句j= + x;使變量X的值變成3,變量j的值也為3。這里所說(shuō)的一個(gè)“單位”是指:如果X是整型的,則+x就是普通的解釋:“x的值比原值增加1;x是指針,它指向數(shù)組的某個(gè)元素,則+x使它指向數(shù)組的后一個(gè)元素。后綴+后綴+的一般形式是變量+表達(dá)式“變量+”運(yùn)算結(jié)果是該變量的原來(lái)值,在確定了表達(dá)式結(jié)果之后,用與前綴+相同的方式增大該變量的值1個(gè)單位。前綴+和后綴+都能使變量的值增加1個(gè)單位,但是它們所代表的表達(dá)式的值卻不相同,前者是變量增加后的值,后者是變量還未增加的原先值。例如i,j為整型變量,且i的值為4,以下分別用和表記的代碼將使j獲得不同的值:j=+i ;j= i+都使變量i的值變?yōu)?/p>

19、5,但使j的值為5;使j的值為4。前綴-前綴- 的一般形式是-變量前綴-使變量的情減少(或后退)l個(gè)單位,并以變量的新值為表達(dá)式“-變量”的運(yùn)算結(jié)果。后綴-后綴- 的一般形式是變量-后綴- 作用于變量時(shí),以該變量的值作為表達(dá)式“變量-”的運(yùn)算結(jié)果,即先取其值為結(jié)果,然后用與前綴-相同的方式減少該變量1個(gè)單位。后綴- 與前綴- 的區(qū)別類似于后綴+與前綴+的區(qū)別。類似前面的例子,依舊假定i的值為4,兩代碼j= -ij=i-都使變量i的值變?yōu)?,但使j的值為3;使j的值為4。使用+和-運(yùn)算符時(shí),其運(yùn)算對(duì)象僅適用于變量,不能是常量等數(shù)據(jù)值表達(dá)式。如 4+或(i+j)+都是不合法的。+和-是帶有副作用的

20、運(yùn)算符。建議讀者不要在一個(gè)表達(dá)式中對(duì)同一變量多次使用這樣的運(yùn)算符,可能會(huì)發(fā)生意想不到的結(jié)果。如i的值為4,對(duì)表達(dá)式(i+)+(i+)可能認(rèn)為它的值為 9(+5)。然而在 TURBO C和MS C系統(tǒng)中,它的值為8。而表達(dá)式(+i)+(+i)的值為12。這是因?yàn)檫@些系統(tǒng)在處理 i+時(shí),先使用 i的原值計(jì)算整個(gè)表達(dá)式,然后再讓i連續(xù)兩次自增;處理+i時(shí),在計(jì)算表達(dá)式值之前,先對(duì) i執(zhí)行兩次自增,然后才計(jì)算表達(dá)式。放前一個(gè)表達(dá)式的值為8,后一個(gè)表達(dá)式的值為12。因+與+(-與-類似)是兩個(gè)不同運(yùn)算符,對(duì)于類似表達(dá)式i+j會(huì)有不同的理解:(i+)+ j或i+(+j)。 C編譯的處理方法是自左至右讓盡可

21、能多的字符組成一個(gè)合法的句法單位(如標(biāo)識(shí)符、數(shù)字、運(yùn)算符等)。因此,i+j被解釋成(i+)+j,而不是i+(+j)。增1(+)和減1(-)運(yùn)算符的結(jié)合方向是自右至左的。2.關(guān)系運(yùn)算符用于關(guān)系運(yùn)算的關(guān)系運(yùn)算符有六個(gè):(大于)、=(大于等于)、=(等于)和!=(不等)。關(guān)系運(yùn)算是雙目運(yùn)算,它的運(yùn)算對(duì)象可以是基本數(shù)據(jù)類型的數(shù)據(jù),用于比較大小;或是指向同一個(gè)數(shù)組兩元素的指針,用于比較前后關(guān)系。在高級(jí)語(yǔ)言中,習(xí)慣稱條件滿足為“真”,不滿足為“假”。特別在C語(yǔ)言中約定:比較后,條件滿足(真)的值為1;比較后,條件不滿足(假)的值為兒用關(guān)系運(yùn)算符將兩個(gè)子表達(dá)式連接起來(lái),構(gòu)成關(guān)系比較表達(dá)式,求得結(jié)果為1(真)

22、或0(假)。六個(gè)關(guān)系運(yùn)算符中,運(yùn)算符(、=)的優(yōu)先級(jí)高于運(yùn)算符(=,!=)。如表達(dá)式Xy=Cy)=(CD)。 另外,為便于描述兩個(gè)復(fù)雜算式的比較,關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符的優(yōu)先級(jí)。設(shè)有i=1,j=2,k=3,則表達(dá)式ij的值為“假”,即表達(dá)式的值為0;表達(dá)式i=kj的值為“真”,即表達(dá)式的值為1(先計(jì)算kj,其值為1,等于i);i+jK的值為“假”,即表達(dá)式 的值為0。關(guān)系運(yùn)算符的結(jié)合方向是自左至右。仍設(shè)i=1,j=2,k=3,則表達(dá)式kji的值為0(先計(jì)算kj,其值為1,再計(jì)算11,結(jié)果為0)。 3.邏輯運(yùn)算符用于邏輯運(yùn)算的邏輯運(yùn)算符有三個(gè):&(邏輯與)、|(邏輯或)、!(邏輯非)其

23、中運(yùn)算符“&”和“|”是雙目運(yùn)算符,要求有兩個(gè)整型或字符型的運(yùn)算對(duì)象,用于連接多個(gè)判定條件,構(gòu)成更復(fù)雜的條件判定;運(yùn)算符“!”是單目運(yùn)算符,用于描述對(duì)給定條件的否定判定。邏輯運(yùn)算產(chǎn)生的結(jié)果也只能是1或0。 1表示邏輯運(yùn)算結(jié)果為“真”;用0表示運(yùn)算結(jié)果為“假”。在判定一個(gè)運(yùn)算對(duì)象的值為“真”或“假”時(shí),以運(yùn)算對(duì)象的值不等于零為“真”,運(yùn)算對(duì)象的值等于0為“假”。邏輯運(yùn)算符中,按優(yōu)先級(jí)排列為:邏輯非運(yùn)算符!的優(yōu)先級(jí)高于邏輯與運(yùn)算符&,邏輯與運(yùn)算符&的優(yōu)先級(jí)高于邏輯或運(yùn)算符|。另外,&和|的優(yōu)先級(jí)低于關(guān)系運(yùn)算符的優(yōu)先級(jí);!的優(yōu)先級(jí)高于算術(shù)運(yùn)算符的優(yōu)先級(jí)。邏輯運(yùn)算符|和&的結(jié)合方向是自左至右,而邏輯運(yùn)

24、算符!的結(jié)合方向是自有至左。需要特別指出的是,“邏輯與”和“邏輯或”運(yùn)算符分別有以下性質(zhì):a&b,僅當(dāng)a為0時(shí),不管b為何值(實(shí)際上不再計(jì)算b),結(jié)果為0。a|b,僅當(dāng) a為 1時(shí),不管 b為何值(實(shí)際上不再計(jì)算 b),結(jié)果為1。上述性質(zhì)就是說(shuō),對(duì)于表達(dá)式a&b,僅當(dāng)子表達(dá)式a為非零時(shí),才計(jì)算子表達(dá)式b;對(duì)于表達(dá)式a|b,僅當(dāng)子表達(dá)式a為0時(shí),才計(jì)算子表達(dá)式b。在具體編寫(xiě)程序時(shí),也應(yīng)利用以上性質(zhì)。對(duì)于兩個(gè)條件的邏輯與,如當(dāng)條件1不成立情況下,條件2的值沒(méi)有意義或不可計(jì)算時(shí),邏輯表達(dá)式應(yīng)寫(xiě)成:條件l&條件2避免在條件1不成立情況下,計(jì)算條件2。如有條件:y/x2且 x!=0,應(yīng)寫(xiě)成: x!=0

25、& y/x2當(dāng)X為0時(shí),不會(huì)計(jì)算y/X。而寫(xiě)成:y/X2 & X!=0是不正確的,因?yàn)楫?dāng) X為0時(shí),不能計(jì)算y/X。對(duì)于邏輯或也有類似情況。由于上述性質(zhì),在計(jì)算連續(xù)的邏輯與和邏輯或運(yùn)算時(shí),實(shí)際上不分優(yōu)先級(jí),而是順序從左至右計(jì)算。在計(jì)算邏輯與運(yùn)算時(shí),若有左運(yùn)算對(duì)象的值為0,則不再繼續(xù)計(jì)算邏輯與運(yùn)算,并立即以0為邏輯與運(yùn)算的結(jié)果;在計(jì)算邏輯或運(yùn)算時(shí),若有左運(yùn)算對(duì)象的值為1,則不再繼續(xù)計(jì)算邏輯或運(yùn)算,并立即以1為邏輯或運(yùn)算的結(jié)果。在順序計(jì)算邏輯表達(dá)式的過(guò)程中,一旦確定了表達(dá)式的最終結(jié)果,就不再繼續(xù)計(jì)算。4.賦值運(yùn)算符賦值運(yùn)算的最簡(jiǎn)單形式是變量=表達(dá)式其中“=”是賦值運(yùn)算符。賦值運(yùn)算的執(zhí)行過(guò)程是:(l

26、)先計(jì)算賦值運(yùn)算符右端的表達(dá)式;(2)如表達(dá)式的類型與賦值運(yùn)算符左邊的變量類型不同(僅限于基本類型),將表達(dá)式值的類型自動(dòng)轉(zhuǎn)換成變量的類型;(3)將求得的值賦給變量,即存儲(chǔ)到由變量所占的內(nèi)存中。簡(jiǎn)單地說(shuō),計(jì)算表達(dá)式的值,將該值賦給變量。賦值運(yùn)算也有結(jié)果,經(jīng)賦值運(yùn)算后,賦值表達(dá)式具有賦值后賦位運(yùn)算符左邊變量同樣的類型和值。因賦位運(yùn)算有值,所以可以進(jìn)一步參與運(yùn)算,特別是可以再賦植給其它變量。賦值運(yùn)算符的結(jié)合性是邊有至左”的,當(dāng)連續(xù)有多個(gè)賦值運(yùn)算時(shí),則從右至左逐個(gè)賦值。如有變量定義:int k; double x;則賦值表達(dá)式:x= k= 3.5是先將實(shí)數(shù)3.5自動(dòng)轉(zhuǎn)換成整數(shù)3賦給整型變量k,然后又

27、將整數(shù)3自動(dòng)轉(zhuǎn)換成實(shí)數(shù)3.0賦給實(shí)型變量X。所以,k的值是3,X的值是3.0。在程序中,經(jīng)常遇到在變量當(dāng)前值的基礎(chǔ)上作某種修正的運(yùn)算。如x=x+5.0這類運(yùn)算的特點(diǎn)是:變量既是運(yùn)算對(duì)象,又是賦值對(duì)象。為避免對(duì)同一存儲(chǔ)對(duì)象的地址重復(fù)計(jì)算,C語(yǔ)言弓隊(duì)復(fù)合賦值運(yùn)算符。它們是+=、-=、*=、%=、=、= 、&= 、=、|=通常,記日為某個(gè)雙目運(yùn)算符,復(fù)合賦值運(yùn)算x=e其等效的表達(dá)式為x= x(e)注意,當(dāng)e是一個(gè)復(fù)雜表達(dá)式時(shí),等效表達(dá)式的括號(hào)是必需的。如y*= a+b的等效表達(dá)式是y= y*(a+b)賦值運(yùn)算符和所有復(fù)合賦值運(yùn)算符的優(yōu)先級(jí)全相同,并且都是“自右至左”結(jié)合,它們的優(yōu)先級(jí)高于遠(yuǎn)號(hào)運(yùn)算符的

28、優(yōu)先級(jí),低于其它所有運(yùn)算符的優(yōu)先級(jí)。5.逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符“,”用于將若干表達(dá)式連接起來(lái)順序地逐個(gè)計(jì)算。連續(xù)返號(hào)運(yùn)算的一般形式為:表達(dá)式1,表達(dá)式2,表達(dá)式n它的計(jì)算順序是從左到右逐一計(jì)算各表達(dá)式,并以表達(dá)式n的值為連續(xù)逗號(hào)運(yùn)算的結(jié)果。例如,表達(dá)式x=( i=3, i*2)使i等于3,X等于6。其實(shí),逗號(hào)運(yùn)算只是把多個(gè)表達(dá)式串聯(lián)起來(lái),在許多情況下,使用逗號(hào)運(yùn)算的目的只是想分別計(jì)算各個(gè)表達(dá)式的值,而并非想使用逗號(hào)運(yùn)算中最后那個(gè)表達(dá)式的值。逗號(hào)運(yùn)算最常用于for結(jié)構(gòu)中,用于給多個(gè)變量登初值,或用于對(duì)多個(gè)變量的值逐一修改等。逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,其結(jié)合性是“自左向右”的。 6.條件運(yùn)算符條件運(yùn)算

29、是一個(gè)三目運(yùn)算,有三個(gè)運(yùn)算對(duì)象。條件運(yùn)算的一般形式為表達(dá)式1?表達(dá)式2:表達(dá)式3條件運(yùn)算的計(jì)算規(guī)則是:(1)計(jì)算表達(dá)式1的值;(2)如果表達(dá)式1的值非0(真),則計(jì)算表達(dá)式2,并以表達(dá)式2的值為條件運(yùn)算的結(jié)果(不再計(jì)算表達(dá)式3);(3)如果表達(dá)式1的值為0(假),則計(jì)算表達(dá)式3,并以表達(dá)式3的值為條件運(yùn)算的結(jié)果(不再計(jì)算表達(dá)式2)。例如,表達(dá)式Xy?X:y如果xy條件為真,則條件運(yùn)算取x值,否則取y值。條件運(yùn)算符(?:)的優(yōu)先級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符,也低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。例如,表達(dá)式max= X y?X: y+ l等效于表達(dá)式max=(xy) ?x:( y+l)條件運(yùn)算符的結(jié)

30、合性為“自右至左”。例如,表達(dá)式Xy?X:uV?u:V等效于表達(dá)式Xy?X:(uV?u:V)7.長(zhǎng)度運(yùn)算符長(zhǎng)度運(yùn)算以字節(jié)為單位給出其運(yùn)算對(duì)象所需(或所占)的字節(jié)數(shù),運(yùn)算對(duì)象可以是任何類型的數(shù)據(jù)對(duì)象或數(shù)據(jù)類型。它是根據(jù)對(duì)象的類型來(lái)確定對(duì)象(所需)的字節(jié)數(shù)的。長(zhǎng)度運(yùn)算有兩種書(shū)寫(xiě)形式:sizeof變量名或sizeof(類型名)如果有某種類型為江的變量V,其中t可以是系統(tǒng)提供的類型或用戶自己定義的類型,可以是簡(jiǎn)單的,也可以是數(shù)組、結(jié)構(gòu)等。則 sizeof V就是變量 V所占的字節(jié)數(shù)。如有int j;double x;表達(dá)式sizeof j和sizeOf x分別是變量j和x所占的字節(jié)數(shù)。sizeof(t

31、)是系統(tǒng)為分配一個(gè)類型為t的數(shù)據(jù)對(duì)象所需的字節(jié)數(shù)。如sizeOf(int)和sizeof(dou-ble)分別是系統(tǒng)為分配一個(gè)類型為int和double變量所需的字節(jié)數(shù)。8.位運(yùn)算符位運(yùn)算的運(yùn)算對(duì)象只能是整型或字符型數(shù)據(jù),位運(yùn)算把運(yùn)算對(duì)象看作是由二進(jìn)位組成的位率信息,按位完成指定的運(yùn)算,得到位串信息的結(jié)果。位運(yùn)算符又可分成兩類:一類是位邏輯運(yùn)算符,另一類是位移位運(yùn)算符。位邏輯運(yùn)算符有:&(按位與)、|(按位或)、(按位異或)、(按位取反)位移位運(yùn)算有:(位右移)其中按位取反運(yùn)算符是單目運(yùn)算符。其余均為雙位運(yùn)算符。位邏輯運(yùn)算符的優(yōu)先級(jí)從高到低,依次為、&、|、,其中的結(jié)合方向自右至左,且優(yōu)先級(jí)高

32、于算術(shù)運(yùn)算符,其余運(yùn)算符的結(jié)合方向都是自左至右 ,且優(yōu)先級(jí)低于關(guān)系運(yùn)算符。位移位運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于關(guān)系運(yùn)算符,它們的結(jié)合方向是自左至右。按位與運(yùn)算符(&)按位與運(yùn)算將將兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)位按位遵照以下規(guī)則進(jìn)行計(jì)算:0&0=0, 0&l=0,1&0=0,1&l=1即同為一的位,結(jié)果為1,否則結(jié)果為0。例如,設(shè) 3的內(nèi)部表示為,5的內(nèi)部表示為,則3&5的結(jié)果為 按位與運(yùn)算有兩種典型用法。一是取一個(gè)位率信息的某幾位,如以下代碼截取。的最低7位、&0177t二是讓某變量保留某幾位,其余位設(shè)置成0,如以下代碼讓X只保留最低6位:x=X&077、以上用法都先要設(shè)計(jì)好一個(gè)常數(shù),該常數(shù)只有需要

33、的位是互,不需要的位是 0。用它與指定的位串信息按位與。按位或運(yùn)算符(|)按位或運(yùn)算將兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)位按位遵照以下規(guī)則進(jìn)行計(jì)算:0|0=0, 0|l=1, 1|0=l, 1|1=1即只要有五個(gè)是1的位,結(jié)果為1,否則為0。例如,023|035結(jié)果為037。按位或運(yùn)算的典型用法是將一個(gè)位串信息的某幾位設(shè)置成1。如將要獲得最右4位為1,其它位與變量j的其它位相同,可用邏輯或運(yùn)算 017|j。若要把這結(jié)果賦給變量 j,可寫(xiě)成:j=017|j按位異或運(yùn)算符()按位異或運(yùn)算將兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)位按位遵照以下規(guī)則進(jìn)行計(jì)算:00= 0, 01=l, l0=l, 1l=0即相應(yīng)位的值相同的,結(jié)果為0,不相

34、同的結(jié)果為l。例如,013035的結(jié)果為026。異或運(yùn)算的意思是求兩個(gè)運(yùn)算對(duì)象相應(yīng)位值是否相異,相異的為1,相同的為0。按位異或運(yùn)算的典型用法是求一個(gè)位串信息的某幾位信息的反。如欲求整型變量j的最右4位信息的反,用邏輯異或運(yùn)算017j,就能求得j最右4位的信息的反,即原來(lái)為1的位,結(jié)果是0;原來(lái)為0的位,結(jié)果是1。按位取反運(yùn)算符()按位取反運(yùn)算是單目運(yùn)算,用來(lái)求一個(gè)位串信息按位的反,即那些為0的位,結(jié)果是1;而那些為1的位,結(jié)果是幾例如,7的結(jié)果為0xfff8。取反運(yùn)算常用來(lái)生成與系統(tǒng)實(shí)現(xiàn)無(wú)關(guān)的常數(shù)。如要將變量X最低6位置成0,其余位不變,可用代碼 X= X&077實(shí)現(xiàn)。以上代碼與整數(shù) X用

35、2個(gè)字節(jié)還是用 4個(gè)字節(jié)來(lái)實(shí)現(xiàn)無(wú)關(guān)。當(dāng)兩個(gè)長(zhǎng)度不同的數(shù)據(jù)進(jìn)行位運(yùn)算時(shí)(例如 long型數(shù)據(jù)與 int型數(shù)據(jù)),將兩個(gè)運(yùn)算對(duì)象的右端對(duì)齊進(jìn)行位運(yùn)算。如果短的數(shù)為正數(shù),高位用0補(bǔ)滿;如果短的數(shù)為負(fù)數(shù),高位用1補(bǔ)滿。如果短的為無(wú)符號(hào)整數(shù),則高位總是用0補(bǔ)滿。位運(yùn)算用來(lái)對(duì)位串信息進(jìn)行運(yùn)算,得到位串信息結(jié)果。如以下代碼能取整型變量k的位串信息的最右邊為亞的信息位:(k-l)k)&k。位左移運(yùn)算符()位左移運(yùn)算符用來(lái)將左運(yùn)算對(duì)象(整型或字符型數(shù)據(jù))作為二進(jìn)位信息串作整體向左移動(dòng),移動(dòng)的位數(shù)由右運(yùn)算對(duì)象指定,右端空出的位用0補(bǔ)充,得到新的位申信息。例如014)位右移運(yùn)算將一個(gè)位串信息向右移指定的位,右端移出的位的信息被丟棄。例如122,結(jié)果為3。與左移相反,對(duì)于小整數(shù),每右移1位,相當(dāng)于除以人在右移時(shí),需要注意符號(hào)位問(wèn)題。對(duì)無(wú)符號(hào)數(shù)據(jù),右移時(shí),左端空出的位用0補(bǔ)充。對(duì)于帶符號(hào)的數(shù)據(jù),如果移位前符號(hào)位為剛正數(shù)),則左端也是用0補(bǔ)充;如果移位前符號(hào)位為1(負(fù)數(shù)),則左端用0或用1補(bǔ)充,這取決于計(jì)算機(jī)系統(tǒng)。對(duì)于負(fù)數(shù)右移,稱用0補(bǔ)充的系統(tǒng)為“邏輯右移”,用1補(bǔ)充的系統(tǒng)為“算術(shù)右移”。以下代碼能說(shuō)明讀者上機(jī)的系統(tǒng)所采用的右移方法:printf(”%dnnn”,-24);者輸出結(jié)果為一l,是采用算術(shù)右移;輸出結(jié)果為一個(gè)大整數(shù),則為邏輯右移。 2.5 表達(dá)式表達(dá)式就是將運(yùn)算符與運(yùn)算對(duì)象

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論