基本數(shù)據(jù)類型及運(yùn)算符原始.ppt_第1頁
基本數(shù)據(jù)類型及運(yùn)算符原始.ppt_第2頁
基本數(shù)據(jù)類型及運(yùn)算符原始.ppt_第3頁
基本數(shù)據(jù)類型及運(yùn)算符原始.ppt_第4頁
基本數(shù)據(jù)類型及運(yùn)算符原始.ppt_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基本數(shù)據(jù)類型及運(yùn)算符,C語言標(biāo)識(shí)符和關(guān)鍵字 C語言的基本數(shù)據(jù)類型 常量的定義和使用方法 變量的定義和使用方法 表達(dá)式及各種運(yùn)算符的使用 各種數(shù)據(jù)類型之間的相互轉(zhuǎn)換 位運(yùn)算符的使用,C語言標(biāo)識(shí)符,計(jì)算機(jī)程序處理的對(duì)象是數(shù)據(jù),編寫程序也就是描述對(duì)數(shù)據(jù)的處理過程。在程序中通過名字建立定義與使用的關(guān)系。為了這種需要,每種程序語言都規(guī)定了在程序里如何描述名字,程序語言的名字通常被稱為“標(biāo)識(shí)符”。 直接地說,標(biāo)識(shí)符就是一個(gè)名字,像后面介紹的符號(hào)常量名、變量名、函數(shù)名、標(biāo)號(hào)、數(shù)組名、文件名、結(jié)構(gòu)類型名和其他各種用戶定義的對(duì)象名都是標(biāo)識(shí)符,它們的命名必須滿足標(biāo)識(shí)符的構(gòu)成規(guī)則。 C語言中允許用作標(biāo)識(shí)符的字符有:

2、 26個(gè)英文字母,包括大小寫(共52個(gè)) 數(shù)字0,l,9 下劃線 標(biāo)識(shí)符的構(gòu)成規(guī)則為: 必須由字母(az,AZ)或下劃線(_)開頭 后面可以跟隨任意的字母、數(shù)字或下劃線,在C語言中,大小寫字母有不同的含義,例如:num,Num,NUM為三個(gè)不同的標(biāo)識(shí)符。 在構(gòu)造標(biāo)識(shí)符時(shí),應(yīng)注意做到“見名知意”,即選擇有含義的英文單詞(或漢語拼音)作標(biāo)識(shí)符,以增加程序的可讀性。如表示年可以用year,表示長(zhǎng)度可用length,表示和可以用sum等。 C語言中有一些標(biāo)識(shí)符被稱為關(guān)鍵字,在系統(tǒng)中具有特殊用途,不能作為一般標(biāo)識(shí)符使用,如用于整型變量定義的int關(guān)鍵字,就不能再用作變量名。 有些標(biāo)識(shí)符雖不是關(guān)鍵字,但C

3、語言總是以固定的形式用于專門的地方,因此,用戶也不要把它們當(dāng)做一般標(biāo)識(shí)符使用,以免造成混亂。這些常用的標(biāo)識(shí)符有:define,include,ifdef,ifndef,endif,elif。,例如,以下均是合法的標(biāo)識(shí)符:sum, a1, i, j5k3, sum_avg以下均是不合法的標(biāo)識(shí)符:5i/*錯(cuò)在以數(shù)字開頭*/u.s/*錯(cuò)在出現(xiàn)“.”*/good bay/*錯(cuò)在中間有空格*/ 在所有合法C標(biāo)識(shí)符中有一個(gè)特殊的小集合,其中的標(biāo)識(shí)符稱為C語言的“關(guān)鍵字”。作為關(guān)鍵字的每個(gè)標(biāo)識(shí)符在C程序中都有語言里預(yù)先定義好的特殊意義;這些關(guān)鍵字不能用于任何其他目的,例如,不能用關(guān)鍵字為程序中自己的東西命名

4、。C語言的關(guān)鍵字總共有32個(gè),下面列出了全部關(guān)鍵字。autobreakcasecharconst continuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile,基本數(shù)據(jù)類型,C語言有五種基本數(shù)據(jù)類型:字符、整型、單精度實(shí)型、雙精度實(shí)型和空類型。盡管這幾種類型數(shù)據(jù)的長(zhǎng)度和范圍隨處理器的類型和C語言編譯程序的實(shí)現(xiàn)而異,但以bit為例,整數(shù)與CPU字長(zhǎng)相等,一個(gè)字符通常為一個(gè)

5、字節(jié),浮點(diǎn)值的確切格式則根據(jù)實(shí)現(xiàn)而定。對(duì)于多數(shù)32位的計(jì)算機(jī),表2-1給出了五種數(shù)據(jù)的長(zhǎng)度和范圍。,除void類型外,基本類型的前面可以有各種修飾符。修飾符用來改變基本類型的意義,以便更準(zhǔn)確地適應(yīng)各種情況的需求。修飾符如下: signed(有符號(hào)) unsigned(無符號(hào)) long(長(zhǎng)型符) short(短型符) short只能修飾int,且short int可省略為short。 long只能修飾int和double,修飾為long int時(shí),可省略為long。 unsigned和signed只能修飾char和int,一般情況下,char和int默認(rèn)為signed型。實(shí)型數(shù)float和do

6、uble總是有符號(hào)的,不能用unsigned修飾。,常量,在程序運(yùn)行中,其值不能被改變的量稱之為常量。在基本數(shù)據(jù)類型中常量分為整型常量、實(shí)型常量、符號(hào)常量和字符型常量(含字符常量和字符串常量)。,1. 整型常量,整型常量即為整型常數(shù),可用十進(jìn)制、八進(jìn)制和十六進(jìn)制3種形式表示。 十進(jìn)制整型常量由0至9的數(shù)字組成,沒有前綴,不能以0開始,沒有小數(shù)部分。如:-123,0,456等。 八進(jìn)制整型常量以0為前綴,其后由0到7的數(shù)字組成,沒有小數(shù)部分。如:0123(等于十進(jìn)制數(shù)的83),047(等于十進(jìn)制數(shù)的39)。 十六進(jìn)制整型常量以0 x或0X為前綴,其后由0到9的數(shù)字和A到F(大小寫均可)的字母組成

7、,沒有小數(shù)部分。如:0 x123(等于十進(jìn)制數(shù)的291),0X7A(等于十進(jìn)制數(shù)的122)。 整型常量中的長(zhǎng)整型數(shù)據(jù)可用L(或小寫字母l)作后綴來表示。如:1234L,5678l等。 整型常量中的無符號(hào)型數(shù)據(jù)可用 U(或u)作后綴來表示。如:1234U,5678u等。如果一個(gè)整型常量的后綴是U(或u)和 L(或l),或者是L和U,都表示為unsigned long類型的常量。如:12345UL,67890ul等。,2. 實(shí)型(浮點(diǎn)型)常量,實(shí)型常量是由整數(shù)部分和小數(shù)部分組成的,它只有十進(jìn)制的兩種表示形式。 (1)定點(diǎn)數(shù)形式。它由數(shù)字和小數(shù)點(diǎn)組成。整數(shù)和小數(shù)部分可以省去一個(gè),但不可兩者都省,而且

8、小數(shù)點(diǎn)不能省。如:1.234,.123,123.,0.0等。 (2)指數(shù)形式(或稱科學(xué)表示法)。它是在定點(diǎn)數(shù)形式表示法后加e(或E)和數(shù)字來表示指數(shù)。指數(shù)部分可正可負(fù),但須為整數(shù),且應(yīng)注意字母e(或E)之前必須有數(shù)字。如:1.234e3,12.34e2均合法地代表了1.234103;而e3,1e2.3,.e3,e均不合法。 另外,實(shí)型常量的后綴用F(或f)表示單精度型,而后綴用L(或l)表示長(zhǎng)雙精度型。如:0.5e2f表示單精度數(shù),3.6e5L表示長(zhǎng)雙精度數(shù)。,3. 符號(hào)常量,在程序中,可以定義一個(gè)符號(hào)來代表一個(gè)常量,這種相應(yīng)的符號(hào)稱為符號(hào)常量。例如,用PI代表圓周率,即3.1415926。使

9、用符號(hào)常量有許多好處。一是增加可讀性。 在程序中出現(xiàn)具有一定意義的符號(hào)常量時(shí),一看便能幫助讀者了解其含義,即見名知義。如:PI代表,NAME代表姓名等。二是提高了可維護(hù)性。 使用符號(hào)常量可使修改該常量變得更加方便。例如:在程序中直接使用某個(gè)常量,且該常量在程序中多處出現(xiàn),若需修改該常量時(shí),則需在每處出現(xiàn)該常量的地方都要加以修改,容易漏改或改錯(cuò)。如果使用符號(hào)常量,則只要修改其定義處即可,即一改全改。如:程序中出現(xiàn)某職工的姓名,且多處需要用此姓名,若用NAME符號(hào)常量代表姓名,一旦需要改變姓名,只要修改NAME的定義處即可。,在C語言中,是用預(yù)編譯處理命令#define來定義符號(hào)常量。如: #de

10、fine PI 3.1415926 #define NAME 姚木蘭 這種語句的格式是在#define后面跟一個(gè)標(biāo)識(shí)符和一串字符,彼此之間用空格隔開。由于它不是C語句,故語句末不用分號(hào)(;)。當(dāng)程序被編譯時(shí),它先被編譯預(yù)處理。即預(yù)處理遇到#define時(shí),就用標(biāo)識(shí)符后的字符串替換程序中的所有該標(biāo)識(shí)符。 習(xí)慣上,符號(hào)常量標(biāo)識(shí)符用大寫字母寫出,以示與變量名區(qū)別。另外,符號(hào)常量標(biāo)識(shí)符一旦定義,就不能在其他地方給該標(biāo)識(shí)符再賦值。如:PI=3.14;是錯(cuò)誤的。,字符型常量包含字符常量和字符串常量?jī)深悺?1. 字符常量 用一對(duì)單引號(hào)括起來的一個(gè)字符稱為字符常量。例如:a、A、3、?等。它的實(shí)際含義是該字符

11、在內(nèi)存中的編碼值,常用的是以ASCII編碼來表示字符,如:a的編碼值是97,A的編碼值是65,3的編碼值是51而不是數(shù)值3。 除了以上形式的字符常量外,C還允許使用一種特殊形式的字符常量,即以反斜杠符()開頭,后跟字符的字符序列,稱之為轉(zhuǎn)義字符常量,用它來表示控制及不可見的字符(見表2-2),它同樣表示的是該轉(zhuǎn)義字符的ASCII碼值,如n表示換行,其ASCII碼值為10,a表示響鈴,其ASCII碼值為7等。,轉(zhuǎn)義字符ddd(為八進(jìn)制數(shù)字,07之一)將字符的ASCII碼值轉(zhuǎn)換為對(duì)應(yīng)的字符,它表示任一個(gè)字符。例如,101表示字符A,012表示轉(zhuǎn)義字符n,0或000表示ASCII碼為0的控制字符,即

12、“空”字符。,2. 字符串常量,字符串常量是用一對(duì)雙引號(hào)()括起來的零個(gè)或多個(gè)字符的序列,例如: This is a string 5401349 10000.00 /*引號(hào)中有一個(gè)空格,本書中用 表示一個(gè)空格*/ /*引號(hào)中什么也沒有*/ a/*引號(hào)中有一個(gè)轉(zhuǎn)義字符*/ 字符串常量在內(nèi)存中存儲(chǔ)時(shí),系統(tǒng)自動(dòng)在每個(gè)字符串常量的尾部加一個(gè)“字符串結(jié)束標(biāo)志”字符0。因此,長(zhǎng)度為n個(gè)字符的字符串常量,在內(nèi)存中要占用n+1個(gè)字節(jié)的空間。 例如,hello在內(nèi)存中的形式是: 104 101 108 108 111 0 為了能直觀理解,以后表示字符串時(shí),直接用字符本身表示。上例表示成: hello0,分析【

13、程序2-2】的運(yùn)行結(jié)果。 /* 文件名:chap02_2.cpp */ #include #include void main() char *cstr=Chinaan101t; printf(%dn,strlen(cstr); printf(%sn,cstr); 程序運(yùn)行結(jié)果: 10 China A 程序中Chinaan101t是一個(gè)符號(hào)常量,由字符指針cstr指向它(有關(guān)字符指針的內(nèi)容在后續(xù)章節(jié)中介紹)。該符號(hào)常量似乎有17個(gè)字符,事實(shí)上,它只有10個(gè)字符,分別是C、h、i、n、a、a、n、101(對(duì)應(yīng)字符A)、t和,其中有5個(gè)轉(zhuǎn)義字符。,字符常量A(A)與字符串常量A(“A”)的區(qū)別:

14、定界符不同。字符常量使用單引號(hào),而字符串常量使用雙引號(hào)。 長(zhǎng)度不同。字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度可以是0,也可以是某個(gè)整數(shù)。 存儲(chǔ)要求不同。字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志0。 在C語言中,沒有專門的字符串變量,字符串常量如果需要存儲(chǔ)在變量中,要用字符數(shù)組來解決。詳細(xì)內(nèi)容將在后續(xù)章節(jié)中介紹。,變量,在程序運(yùn)行過程中,其值可以被改變的量稱為變量。變量有兩個(gè)要素: 變量名。每個(gè)變量都必須有一個(gè)名字,即變量名。變量命名應(yīng)遵循標(biāo)識(shí)符的命名規(guī)則。 變量值。在程序運(yùn)行過程中,變量值存儲(chǔ)在內(nèi)存中;不同類型的變量,占用的內(nèi)存單元(字節(jié)

15、)數(shù)不同。在程序中,通過變量名來引用變量的值。 【程序2-3】用來輸出兩個(gè)整數(shù)相加、相減和相乘的結(jié)果,代碼如下。 /* 文件名:chap02_3.cpp */ #include void main() int x,y; printf(請(qǐng)輸入兩個(gè)整數(shù),中間用空格隔開:); scanf(%d%d, 程序運(yùn)行結(jié)果: 請(qǐng)輸入兩個(gè)整數(shù),中間用空格隔開:10 5 10+5=15 10-5=5 10*5=50 本程序中,x和y定義成整型變量,用于接受用戶輸入的值。,變量的定義與初始化,在C語言中,要求對(duì)所有用到的變量必須先定義后使用。在定義變量的同時(shí),進(jìn)行賦初值的操作稱為變量初始化。 變量定義的格式如下:

16、存儲(chǔ)類型 數(shù)據(jù)類型 變量名1,變量名2; 例如: int i,j,k;/*定義i,j,k為整型變量*/ long m,n;/*定義m,n為長(zhǎng)整型變量*/ float a,b,c;/*定義a,b,c為實(shí)型變量*/ char ch1,ch2;/*定義ch1,ch2為字符型變量*/ 變量初始化的一般格式如下: 存儲(chǔ)類型 數(shù)據(jù)類型 變量名1=初值1,變量名2=初值2,; 例如: float f1=1.23,f2,f3; 該語句定義了f1,f2和f3三個(gè)實(shí)型變量,同時(shí)初始化了變量 f1。,表達(dá)式,以上小節(jié)介紹了數(shù)據(jù)的類型,以及常量、變量的概念和定義,那么如何處理這些數(shù)據(jù)呢?可以用代表一定運(yùn)算功能的運(yùn)算符

17、將運(yùn)算對(duì)象連接起來,并且以符合C的語法規(guī)則構(gòu)成一個(gè)說明運(yùn)算過程的式子(即表達(dá)式)來完成對(duì)數(shù)據(jù)的處理。其運(yùn)算對(duì)象包括常量、變量、函數(shù)等。,運(yùn)算符簡(jiǎn)介,運(yùn)算符是C語言里用于描述對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的特殊符號(hào)。有了基本數(shù)據(jù)對(duì)象和運(yùn)算符,就可以寫出描述計(jì)算的表達(dá)式了。語言具有豐富而繁多的運(yùn)算符,由它構(gòu)成了各種表達(dá)式,這是其它任何程序設(shè)計(jì)語言所不可比的。其中有些運(yùn)算符已超出了一般運(yùn)算符的概念,這為編寫程序帶來了很大的方便性和靈活性,使程序簡(jiǎn)潔而高效。但另一方面,由于運(yùn)算符豐富也會(huì)產(chǎn)生不便于記憶、應(yīng)用難度較高等問題。初學(xué)者一定要注意運(yùn)算符、表達(dá)式和運(yùn)算過程的使用規(guī)則,這是編程的基本條件。Turbo C + 3.

18、0的運(yùn)算符非常豐富,主要分為三大類:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符與邏輯運(yùn)算符,按位運(yùn)算符。除此之外,還有一些用于完成特殊任務(wù)的運(yùn)算符。下面分別進(jìn)行介紹。,算術(shù)運(yùn)算符和算術(shù)表達(dá)式,表2-3列出了C語言中允許的算術(shù)運(yùn)算符。在C語言中,運(yùn)算符“+”、“”、“*”和“/”的用法與大多數(shù)計(jì)算機(jī)語言的相同,幾乎可用于所有C語言內(nèi)定義的數(shù)據(jù)類型。當(dāng)“/”被用于整數(shù)或字符時(shí),結(jié)果取整。例如,在整數(shù)除法中,10/3=3。 一元減法的實(shí)際效果等于用-1乘單個(gè)操作數(shù),即任何數(shù)值前放置減號(hào)將改變其符號(hào)。模運(yùn)算符“%”在C語言中也同它在其它語言中的用法相同。切記,模運(yùn)算取整數(shù)除法的余數(shù),所以“%”不能用于float和doub

19、le類型。,下面的程序說明%用法的程序段。 int x,y; x=10; y=3; printf(%d,x/y);/*顯示3*/ printf(%d,x%y);/*顯示1,整數(shù)除法的余數(shù)*/ x=1; y=2; printf(%d,%d,x/y,x%y);/*顯示0,1*/ 最后一行打印一個(gè)0和一個(gè)1,因?yàn)?/2整除時(shí)為0,余數(shù)為1,故1%2取余數(shù)1。,賦值運(yùn)算符和賦值表達(dá)式,賦值運(yùn)算構(gòu)成了語言最基本、最常用的賦值語句,同時(shí)語言還允許賦值運(yùn)算符=與10種運(yùn)算符聯(lián)合使用,形成組合賦值運(yùn)算,使得程序簡(jiǎn)明而精練。 1. 賦值運(yùn)算符 賦值運(yùn)算符用=表示,其功能是計(jì)算賦值運(yùn)算符=右邊表達(dá)式的值,并將計(jì)算

20、結(jié)果賦給左邊的變量。例如: n=12.3;/*直接將實(shí)型數(shù)12.3賦給變量n*/ c=a*b;/*將a和b進(jìn)行乘法運(yùn)算,所得到的結(jié)果賦給變量c*/ 注意:賦值運(yùn)算符=與數(shù)學(xué)中的等號(hào)完全不同,數(shù)學(xué)中的等號(hào)表示在該等號(hào)兩邊的值是相等的,而賦值運(yùn)算符=是指要完成=右邊表達(dá)式的運(yùn)算,并將運(yùn)算結(jié)果存放到=左邊指定的內(nèi)存變量中。可見,賦值運(yùn)算符完成兩類操作,一是計(jì)算,二是賦值。,2. 賦值表達(dá)式,賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為賦值表達(dá)式。它的一般形式為:變量名表達(dá)式 對(duì)賦值表達(dá)式的求解過程:計(jì)算賦值運(yùn)算符右邊表達(dá)式的值,并將計(jì)算結(jié)果賦值給賦值運(yùn)算符左邊的變量。賦值表達(dá)式變量

21、名表達(dá)式的值就是賦值運(yùn)算符左邊變量的值。例如上面提到的算術(shù)表達(dá)式:(a+b+c)/(sqrt(a)+b*(+sin(y)+sin(z) 寫成賦值表達(dá)式為: v=(a+b+c)/(sqrt(a)+b*(+sin(y)+sin(z)。其中v是變量, 賦值號(hào)右邊是算術(shù)表達(dá)式,v的值就是這個(gè)算術(shù)表達(dá)式的值,也就是該賦值表達(dá)式的值。以下的賦值表達(dá)式表示: i=5/* 將常數(shù)5賦值給變量i,賦值表達(dá)式i=5的值就是5 */ a=3.5-b/* 計(jì)算算術(shù)表達(dá)式3.5-b的值并賦值給變量a */ x=(a+b+c)/12.4*8.5 /* 計(jì)算算術(shù)表達(dá)式(a+b+c)/12.4*8.5的值并賦值給變量x */

22、,逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式,作為一個(gè)操作符,逗號(hào)把幾個(gè)表達(dá)式串在一起。逗號(hào)操作符的左側(cè)總是作為void(無值),這意味著其右邊表達(dá)式的值變?yōu)橐远禾?hào)分開的整個(gè)表達(dá)式的值。例如: x=(y=3,y+1); 這行將3賦給y,然后將4賦給x,因?yàn)槎禾?hào)操作符的優(yōu)先級(jí)比賦值操作符優(yōu)先級(jí)低,所以必須使用括號(hào)。 實(shí)際上,逗號(hào)表示操作順序。當(dāng)它在賦值語句右邊使用時(shí),所賦的值是逗號(hào)分隔開的表中最后那個(gè)表達(dá)式的值。例如: y=10; x=(y=y-5,25/y); 執(zhí)行后,x的值是5,因?yàn)閥的起始值是10,減去5之后結(jié)果再除以25,得到最終結(jié)果。在某種意義上可以認(rèn)為,逗號(hào)操作符和標(biāo)準(zhǔn)英語的and是同義詞。,類型轉(zhuǎn)換,

23、在對(duì)賦值表達(dá)式求解過程中,如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不一致,賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。其轉(zhuǎn)換工作由編譯自動(dòng)實(shí)現(xiàn),轉(zhuǎn)換原則是以“=”左邊的變量類型為準(zhǔn)。即將“=”右邊的值轉(zhuǎn)換為與“=”左邊的變量類型一致。下面用【程序2-4】說明一下: /* 文件名:chap02_4.cpp */ #include void main() int i=5;/*說明整型變量i并初始化為5*/ float a=3.5,a1;/*說明實(shí)型變量a和a1并初始化a*/ double b=123456789.123456789;/*說明雙精度型變量b并初始化*/ char c=A;/*說明字符變量c并初始化為A*/ print

24、f(i=%d,a=%f,b=%f,c=%cn,i,a,b,c);/*輸出i,a,b,c的初始值*/ a1=i;i=a;a=b;c=i;/*整型變量i的值賦值給實(shí)型變量a1,實(shí)型變量a的值賦給整型變量i,雙精度型變量b的值賦值給實(shí)型變量a,整型變量i的值賦值給字符變量c*/ printf(i=%d,a=%f,a1=%f,c=%cn,i,a,a1,c);/*輸出i,a,a1,c賦值以后的值*/ ,Your Topic Goes Here,運(yùn)行該程序的輸出結(jié)果如下: i=5,a=3.500000,b=123456789.123457,c=A i=3,a=123456792.000000,a1=5.0

25、00000,c=(心形字符) 由以上運(yùn)行結(jié)果可見: 將float型數(shù)據(jù)賦值給int型變量時(shí),先將float型數(shù)據(jù)舍去其小數(shù)部分,然后再賦值給int型變量。 int型數(shù)據(jù)賦給float型變量時(shí),先將int型數(shù)據(jù)轉(zhuǎn)換為float型數(shù)據(jù),并以浮點(diǎn)數(shù)的形式存儲(chǔ)到變量中,其值不變。 double型實(shí)數(shù)賦給float型變量時(shí),先截取double型實(shí)數(shù)的前7位有效數(shù)字,然后再賦值給float型變量。 int型數(shù)據(jù)賦值給char型變量時(shí),由于int型數(shù)據(jù)用兩個(gè)字節(jié)表示,而char型數(shù)據(jù)只用一個(gè)字節(jié)表示,所以先截取int型數(shù)據(jù)的低8位,然后賦值給char型變量。,位運(yùn)算,C語言和其它高級(jí)語言不同的是它完全支持按

26、位運(yùn)算符。這與匯編語言的位操作有些相似。表2-4列舉了一些為運(yùn)算符,如下示:,以上位運(yùn)算符中除“”以外,均為二目運(yùn)算符,即要求兩側(cè)各有一個(gè)運(yùn)算對(duì)象。,1. “按位求反”運(yùn)算(),“”是一個(gè)單目運(yùn)算符,用來對(duì)一個(gè)二進(jìn)制數(shù)按位求反,即將0變1,1變0。例如,025是對(duì)八進(jìn)制數(shù)25(即二進(jìn)制數(shù)00010101)按位求反。 0000000000010101 - 1111111111101010 即八進(jìn)制數(shù)177752。因此,025的值為八進(jìn)制數(shù)177752,并非-025。,2. “左移”運(yùn)算(),“左移”運(yùn)算符是雙目運(yùn)算符,用來將一個(gè)數(shù)的各二進(jìn)位全部左移若干位。運(yùn)算符左邊是移位對(duì)象,右邊是整型表達(dá)式,

27、代表左移的位數(shù)。左移時(shí),右端(低位)補(bǔ)0,左端(高位)移出的部分舍棄。例如: int a=025; a=a2; 將a的二進(jìn)制數(shù)左移2位,右補(bǔ)0。 20000000000010101 - 0000000001010100 即八進(jìn)制數(shù)54。因此,0252的值為八進(jìn)制數(shù)54。,3. “右移”運(yùn)算(),右移運(yùn)算符的使用方法與左移運(yùn)算符一樣,所不同的是移位方向相反。右移時(shí),右端(低位)移出的二進(jìn)制數(shù)舍棄,左端(高位)移入的二進(jìn)制數(shù)分兩種情況:對(duì)于無符號(hào)整數(shù)和正整數(shù),高位補(bǔ)0;對(duì)于負(fù)整數(shù),高位補(bǔ)1。 例如: int a=025; a=a2; 將a的二進(jìn)制數(shù)右移2位,由于a為正整數(shù),左補(bǔ)0。 20000000000010101 - 0000000000000101 即八進(jìn)制數(shù)5。因此,0252的值為八進(jìn)制數(shù)5。,4. “按位與”運(yùn)算( b=ba; a=ab; 因?yàn)閍=ab,(假設(shè)a和b最初的值加上下劃線)則: b=ba=b(ab)=abb=a0=a a=ab=(ab)a=aab=0b=b,6. “按位或”運(yùn)算(|),按位或運(yùn)算的規(guī)則是:參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)位進(jìn)行“或”運(yùn)算,如果兩個(gè)相應(yīng)的二進(jìn)位都為0,則該位的結(jié)果值為0,否則為1。即: 0|0=0;0|l=1;1|0=1;1|1=1; 例如:表達(dá)式12|10的運(yùn)算如下: 12000000

溫馨提示

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

評(píng)論

0/150

提交評(píng)論