語言課件-數(shù)據(jù)類型_第1頁
語言課件-數(shù)據(jù)類型_第2頁
語言課件-數(shù)據(jù)類型_第3頁
語言課件-數(shù)據(jù)類型_第4頁
語言課件-數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實型數(shù)據(jù)字符型數(shù)據(jù)運算符和表達式不同類型數(shù)據(jù)間的混合運算1第2章數(shù)據(jù)類型及表達式2.1

C的數(shù)據(jù)類型23C語言提供了豐富的數(shù)據(jù)類型,主要有以下類型:數(shù)據(jù)類型基本類型基本型(int,2byte)長整型(long,4byte)短整型(short,2byte)無符號整型(unsigned,2byte)整型浮點型單精度浮點型

(float,4byte)雙精度浮點型

(double,8byte)字符型(char,1byte)無值型(void)指針類型數(shù)組類型結(jié)構(gòu)體類型聯(lián)合體類型枚舉類型構(gòu)造類型注:其中()括起來的是對應(yīng)類型的類型關(guān)鍵字及該類型在內(nèi)存中所占的字節(jié)數(shù)。42.2

常量與變量數(shù)據(jù)是組成程序的必要元素,根據(jù)數(shù)據(jù)在程序中值的變化與否,數(shù)據(jù)在C語言程序中以常量和變量兩種形式表示。52.2.1

常量和符號常量1.常量在C語言的程序中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型,有整型常量,有實型常量,有字符常量。以上幾種常量一般從字面上即可判別,所以又統(tǒng)稱為字面常量或直接常量。注意:常量并不占用內(nèi)存,在程序運行時它作為操作對象直接出現(xiàn)在運算器的各種寄存器中。2.符號常量C語言中還可以用一個標識符來代表一個常量,被稱為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define

符號常量名常量其中#define是一條預(yù)處理命令(在后面預(yù)處理程序中將進一步介紹),其功能是把該符號常量定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該符號常量的地方均代之以該常量值。【例2.1】符號常量的使用#define

PI

3.14main(){floatr,s,v;scanf

(“%f”,&r);s=PI*r*r;v=4/3.0*PI*r*r;printf(“s=%f,v=%f\n”,s,v);}程序中用#define命令行定義PI代表常量3.1415926,此后凡是在本文件中出現(xiàn)的PI都代表3.1415926,可以和常量一樣進行運算。若程序運行時,從鍵盤輸入圓的半徑:2↙運行結(jié)果為:s=12.560000,v=16.7466676符號常量

名規(guī)則遵循標識符命名規(guī)則,但是

上符號常量名用大寫,變量名用小寫,以示區(qū)別。注意:符號常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能再被賦值。如果再用以下語句給PI賦值是錯誤的。PI=3.14159;使用符號常量的好處是含義清楚,見名知意,另外能達到“一改全改”的效果。例如為了提高運算的精度,可以將程序的第一行該為:#define

PI

3.1415926此時,在main函數(shù)體中所有PI的值會相應(yīng)改變。通過這種方法就不需要在程序中作多處修改,這不僅做到“一改全改”,同時避免了因疏忽而漏改的現(xiàn)象。72.2.2

變量在程序中,其值可以改變的量稱為變量。變量有兩個基本要素:一個是變量名,其命名規(guī)則符合標識符的所有規(guī)定;另一個是變量類型,其類型決定了變量在內(nèi)單元。在C語言中,變存中要占據(jù)的若干字節(jié)的量一定要先定義,后使用。1.變量定義在C語言中,用類型說明語句對變量加以定義,其一般形式如下:類型

變量名表;這里,類型必須是C語言的有效數(shù)據(jù)類型。變量名表可以是一個或多個標識符名,中間用逗號分隔開。以下是變量定義的例子:int i,

j,

num;float

a,

b,

sum;char c,

ch;/*說明i,j,num為整型變量*//*說明a,b,sum為實型變量*//*說明c,ch為字符型變量*/82.說明變量名可以是C語言中的合法標識符,但用戶在定義時應(yīng)遵循“見名知意”的原則,以便程序的。每一個變量都必須進行類型說明,這樣可以保證程序中變量的正確使用。類型說明的變量在編譯時將被是錯誤的。當一個變量被指定為某一確定類型時,將為它分配若干相應(yīng)字節(jié)的內(nèi)存空間。如char型為1個字節(jié),int

型為2個字節(jié),float

型為4個字節(jié),double型為8個字節(jié)。當然,不同的系統(tǒng)可能會有一些差異。92.4.1

整型常量的表示方法數(shù)據(jù)類型為整型的常量即為整型常量,又稱整常數(shù)。在C語言中,使用的整型常量有八進制、十六進制和十進制3種。其中八進制、十六進制主要用于表示整型常量在內(nèi)存中的形式,也就是表示某整型常量的機器碼;十進制表示外部數(shù)據(jù),其值表示的是真值。2.3

整型數(shù)據(jù)10(1)八進制整型常量八進制整型常量必須以0開頭,即以0作為八進制數(shù)的前綴。其數(shù)碼取值為0~7。由于八進制數(shù)主要用于表示某整型常量的機器碼,所以當表示某數(shù)機器碼時,八進制數(shù)前面沒有符號;如果有符號,則是對其所代表的真值取反。如0123,0123代表的真值為83,0123代表的常量則為83。11(2)十六進制整型常量十六進制整型常量的前綴為0X或0x。其數(shù)碼取值為0~9,A~F或a~f。當十六進制數(shù)中出現(xiàn)a~f或A~F時,數(shù)符碼中出現(xiàn)字母時字母的大小寫應(yīng)和前綴相匹配,即要么全部大寫,要么全部小寫。十六進制數(shù)主要也是用于表示某整型常量的機器碼,所以當表示某數(shù)機器碼時,十六進制數(shù)前面沒有符號;如果有符號,則是對其所代表的真值取反。如0x23,0x23代表的真值為35,0x23代表的常量則為35。121332768時,可以看作長整型常量。(3)十進制整型常量十進制整型常量沒有前綴。整型常量的幾點說明如下。①常量的類型常量的類型可以根據(jù)整型常量描述的數(shù)值來確定其類型。時,可當整型常量的值為32768~以看作基本型整型常量。當整型常量的值為0~65535時,可以看作無符號整型常量。當整型常量的值在大于32767

或小于②整型常數(shù)的后綴十進制無符號整型常量的范圍為0~65535,有符號數(shù)為32768~

。八進制數(shù)表示的機器碼范圍為0~0177777。十六進制數(shù)表示的機器碼范圍為0X0~0XFFFF。如果希望將整型常量按照長整型常量來運算,可以使用長整型數(shù)的后綴“L”或“l(fā)”來表示。例如,十進制長整型常量

158L

358000L142.4.2

整型變量1.整型變量在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。如果定義了一個整型變量i:inti;i=10;十進制數(shù)10的二進制形式為1010,在微機上使用的C編譯系統(tǒng),為每一個整型變量在內(nèi)存中分配2個字節(jié)。

圖2-1(a)是數(shù)據(jù)存放的示意。圖2-1(b)是數(shù)據(jù)在內(nèi)存中實際存放的情況(-10的補碼)。152.

整型變量的分類16整型變量可分為短整型、基本型、長整型和無符號型4類。①短整型短整型的類型說明符為shortint或short,所占字節(jié)和取值范圍均與基本型相同。②基本型基本型的類型說明符為int,在內(nèi)存中占2個字節(jié),其取值的范圍為

215

2151,即

32768~

32767。③長整型長整型的類型說明符為longint或long,在內(nèi)存中占4個字節(jié),其取值范圍是231~2311,即2147483648~2147483647。17④無符號型無符號型的類型說明符為unsigned。無符號型又可與上述3種類型匹配而構(gòu)成。無符號基本型。類型說明符為unsignedint或unsigned,取值范圍是0~65535。無符號短整型。類型說明符為unsignedshort,與無符號基本型一樣。無符號長整型。類型說明符為unsignedlongint或unsignedlong,取值范圍為0~2321,即0~

。183.

整型變量的定義與使用C語言規(guī)定在程序中要用到的變量都必須先定義,對變量部分。如:的定義一般都放在函數(shù)的開始部分的【例2.2】整型變量的定義與使用。main(){inta,b;longc;unsigned

e;a=-1;b=523;c=623789;e=89;printf(“a=%d,

b=%d,

c=%ld,

e=%u\n”,a,b,c,e);}運行結(jié)果如下:a=-1,b=523,c=623789,e=89194.整型變量的初始化程序中常需要對一些變量預(yù)先設(shè)置初值,C允許在定義變量的同時使變量初始化。如:inta=3; /*相當于int

a;a=3;*/inta,b,c=5; /*可以部分初始化*/inta=3,b=3,c=3;

/*不能int

a=b=c=3;*/其它類型變量的初始化與整型變量的初始化類似。20215.整型數(shù)據(jù)的溢出一個整型變量(int)的最大允許值為32767,如果再加1,會出現(xiàn)什么情況?【例2.3】寫出下面程序運行結(jié)果。main(){int

a,b;a=32767;b=a+1;printf(“a=%d,b=%d\n”,a,b);}運行結(jié)果如下:a=32767,

b=-32768C的用法是比較靈活的,如果將a,b改為long

型就可以得到預(yù)期的結(jié)果32768。2.4.1

實型常量的表示方法實型也稱為浮點型。實型常量也稱為實數(shù)或者浮點數(shù)。實型常量不分單、雙精度,都按雙精度double型處理,其有效位數(shù)為15~16位。222.4

實型數(shù)據(jù)(1)小數(shù)形式小數(shù)形式由數(shù)碼0~9和小數(shù)點組成。當某浮點數(shù)整數(shù)部分或小數(shù)部分為0時,0可以省略,但小數(shù)點不可省略。例如:0.0,.25,5.789,0.13,5.0,300.,267.8230,123.等均為合法的實數(shù)。345(無小數(shù)點),a7.(數(shù)碼不可以是字母)等均為

的浮點數(shù)。23(2)指數(shù)形式24指數(shù)形式由尾數(shù)加階碼標志e或E以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為aEn(a為尾數(shù),n為階碼)其值為

a×10n例如,2.1×105可以表示為2.1E5,3.7×10-2可以表示為3.7E2。2.4.2

實型變量實型數(shù)據(jù)在內(nèi)存中的存放形式一個實型數(shù)據(jù)在一般的微型機中是占4個字節(jié)。實型數(shù)據(jù)不管是小數(shù)形式還是指數(shù)形式都是以指數(shù)形式系統(tǒng)把一個實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放,指數(shù)部分采用規(guī)范化的指數(shù)形式。實型變量分類實型變量分為單精度浮點型和雙精度浮點型兩類。單精度浮點型類型說明符為float,雙精度浮點型類型說明符為double。25浮點變量說明的格式為:float變量表列;或26double

變量表列;例如:float

x,y;/*定義x,y為單精度浮點型*/double

a,b,c;

/*定義a,b,c為雙精度浮點型*/float

x=1232.56789;

/*定義x為單精度浮點型,并初始化值為1232.567*/2.5.1

字符常量單字符常量是用單引號括起來的一個字符。單字符常量可以有如下幾種表示方法。直接形式直接形式即在單引號內(nèi)直接書寫字符。例如'a'、'b'、''、''、'?‘八進制形式八進制形式格式為'\ddd',其中“ddd”表示1~3位八進制數(shù),其值代表的是某字符的ASCII值。“\”是轉(zhuǎn)義字符。八進制形式可以表示所有的字符。例如'\101'(等于'A'),'\007'(響鈴控制字符),'\343'(表示ASCII值為227的字符π)。272.5

字符型數(shù)據(jù)十六進制形式十六進制形式格式為'\xhh',其中“hh”表示1~2位十六進制數(shù),其值代表的是某字符的ASCII值,“\”是轉(zhuǎn)義字符,“x”是十六進制前綴。十六進制形式可以表示所有的字符。例如'\x41'(等于'A'),'\x07'(響鈴控制字符),'\xe3'(表示ASCII值為227的字符π)。轉(zhuǎn)義字符轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。28表4-529常用的轉(zhuǎn)義字符轉(zhuǎn)義字符轉(zhuǎn)義字符的意義轉(zhuǎn)義字符轉(zhuǎn)義字符的意義\n換行\(zhòng)r回車\t橫向跳到下一制表位置\f走紙換頁\v豎向跳格\\反斜線符"\"\b退格\'單引號符\"雙引號2.5.2

字符變量30字符型變量(char)用來存放字符常量,注意一個字符變量只能存放一個字符常量。字符變量的定義形式如下:char

c1,c2;定義c1、c2為字符變量,在內(nèi)存中個占一個字節(jié),可以分別存放一個字符。下面是對c1、c2賦值:c1=‘a(chǎn)’;c2=‘b’;實際上其內(nèi)存中存放的是該字符的ASCII碼(參見附錄I)。字符變量的初始化,如:char

c1=‘a(chǎn)’;c2=‘b’;形式及其使2.5.3

字符數(shù)據(jù)在內(nèi)存中的用方法將一個字符常量放到一個字符變量中,實際上是將該字符的ASCII代碼以二進制形式放到

單元中。ch1=‘a(chǎn)’;

ch2=‘a(chǎn)’-32;31【例2.5】大小寫字母的轉(zhuǎn)換。main(){char

c1,c2;c1=′a′;c2=′b′;c1=c1-32;

c2=c2-32;printf("%c

%c\n",c1,c2);printf("%d

%d\n",c1,c2);}322.5.4字符串常量字符串常量是由一對雙引號括起的字符序列,可以沒有字符,也可以只有一個字符。例如,"CHINA","How

are

you!","$12.5","","A","\nc\234\\"等都是合法的字符串常量。字符串

"program"在內(nèi)存

的形式如圖2.1所示。33program\0該字符串占用8個字節(jié)的空間,但其有效字符的個數(shù)卻是7,最后一個字節(jié)字符串結(jié)束標志“\0”。圖2.1

字符串形式34字符串的有效字符的個數(shù)是第一個“\0”前字符的個數(shù)的總和,有效字符的個數(shù)也稱為字符串長度。例如:"computer"長度為8。"\n"長度為1。"abc\n\345\0china"

長度為5

,而不是16

,因為“\0”后的字符是無意義的,“\n”是一個轉(zhuǎn)義字符,“\345”是八進制表示的一個字符。"\"\'\\"

長度為3,因為“\"”、“\\”與“\'”分別為一個字符。352.6

運算符和表達式C運算符與表達式簡介運算符:運算是對數(shù)據(jù)進行加工的過程,描述各種不同運算的符號稱為運算符。操作數(shù):參加運算的數(shù)據(jù)稱為運算對象或操作數(shù)。表達式:用運算符和括號將運算對象連接起來的符合C語言語

則的式子稱為C語言表達式。學(xué)習(xí)時注意運算符的優(yōu)先級、結(jié)合性(左結(jié)合性或右結(jié)合性),操作數(shù)的個數(shù),表達式結(jié)果362.6.2

算術(shù)運算符及算術(shù)表達式37算術(shù)運算符C語言提供了5個基本的算術(shù)運算符:加法運算符-

減法運算符,負號運算符*

乘法運算符/

除法運算符%

取余運算符或稱模運算符運算符,的優(yōu)先級相同,*,/,%的優(yōu)先級相同,*,/,%的優(yōu)先級高于和運算符,算術(shù)運算符都是左結(jié)合的運算符。說明:對于+、-、*

運算的操作數(shù),可以是整型或?qū)嵭偷某A俊⒆兞亢秃瘮?shù),其運算規(guī)則同一般的數(shù)

算規(guī)則。對于/運算,其操作數(shù)可以為整型或?qū)嵭偷某A?、變量和函?shù)。當x/y中如果兩個操作數(shù)中有一個是實型,運算結(jié)果為實型數(shù);若兩個操作數(shù)都是整數(shù)時,運算結(jié)果為整數(shù)(舍去小數(shù)部分),例如:5/2.0=2.5,5/2=2。但是如果除數(shù)或被除數(shù)中有一個為負值,則舍入的方向不固定。例如,-5/3在有的機器上得到結(jié)果-1,有的機器則給出結(jié)果-2。多數(shù)機器采用“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠攏。關(guān)于%運算,其兩個操作數(shù)必須為整數(shù),且在計算x%y時y的值不能為0。例如:5%2=1

6%2=0

7%4=3382.算術(shù)表達式39用算術(shù)運算符和括號運算符將運算對象連接起來的符合C語言規(guī)則的式子,稱為算術(shù)表達式。(1)操作數(shù)個數(shù)

(2)

運算符優(yōu)先級

(3)結(jié)合性。例如:3+a*b/2–1.5+‘a(chǎn)‘優(yōu)先級和結(jié)合性參見附錄2main(){intx,y,r;x

=

11;y

=

6;r

=

x%y;printf("x=%d,y=%d\n",x,y);printf("x+y=%d\n",x+y);printf("x-y=%d\n",x-y);printf("x*y=%d\n",x*y);printf("x/y=%d,余數(shù)=%d\n",x/y,r);}程序運行結(jié)果如下:x=11,y=6x+y=17x-y=5x*y=66x/y=1,余數(shù)=540【例2.6】3

自增自減運算符(++,--)及自增自減表達式41單目運算符運算對象可以位于運算符前面,也可以位于運算符后面。當運算符位于運算對象前面時,稱為前綴運算符,如i和i;當運算符位于運算對象后面時,稱為后綴運算符,如i和i。自增自減運算符的功能是將運算對象加1或減1后,再將結(jié)果保存到運算對象中去,如i等同于ii1。自增自減運算符的運算對象只能是變量。當表達式中出現(xiàn)自增自減運算符時,表達式的求值過程如下。(1)自增自減運算符是后綴運算符時,應(yīng)先使用自增自減運算符的運算對象計算整個表達式的,后自加)例:值,然后再計算自增自減。(先main(){inti=2,j=3;intk;k=(i++)+(j++)+4;printf("result:k=%d,i=%d,j=%d\n",k,i,j);}程序運行結(jié)果為:result:k=9,i=3,j=4表達式k(i)(j)4的運算可理解為:先運算表達式kij4,再計算i和j。4243(2)自增自減運算符是前綴運算符時,應(yīng)先完成自增自減,然后使用運算后的結(jié)果計算整個表)達式的值。(先自加,后例main(){inti=2,j=3;intk;k=(++i)+(++j)+4;printf("result:k=%d,i=%d,j=%d\n",k,i,j);}運行結(jié)果應(yīng)為多少?44result:k=11,i=3,j=4表達式k(i)(j)4的運算可理解為:先運算i和j,再計算表達式

kij4。程序運行結(jié)果為:45(3)當表達式中既含有后綴自增自減運算符,又含有前綴自增自減運算符時,應(yīng)先計算所有的前綴自增自減運算,再計算整個表達式的值,最后計算所有的后綴自增自減運算。例main(){inti=2,j=3;intk;k=(i++)+(j++)+4+(++i)+(++j);printf("result:k=%d,i=%d,j=%d\n",k,i,j);}程序運行結(jié)果為:result:k=18,i=4,j=5表達式k(i)(j)4(i)(j)的運算可理解為:先運算i和j,再計算表達式kij4ij,最后計算i和j。注意:在運算的時候變量i,j是變化的,但在某瞬間值是確定的。46【例2.7】自增、自減運算符前置、后置形式的差異。main(){intk1,k2,x,y;k1=k2=10;x=k1++;y=++k2;printf("k1=%d,

k2=%d

,x=%d,y=%d\n",k1,k2,x,y);k1=k2=10;x=--k1;y=k2--;printf("k1=%d,

k2=%d,x=%d,y=%d\n",k1,k2,x,y);}程序運行結(jié)果如下:k1=11,k2=11,x=10,y=11k1=9,k2=9,x=9,y=10471.簡單的賦值運算符和賦值表達式C語言的賦值運算符是“”,該運算符是雙目運算符,它的優(yōu)先級僅高于逗號運算符,是右結(jié)合性的。由賦值運算符構(gòu)成的賦值表達式的格式為:變量確定的值賦值表達式會得到兩個值。一個是賦值運算符左側(cè)變量的值;另一個是賦值表達式的值,表達式的值與變量的值是相同的。482.6.3

賦值運算符和賦值表達式下列表達式是合乎C語言表達式規(guī)則的表達式:a=123a=123.456c=a+'A'x=a+ca+(x=a+4)/c /*算術(shù)表達式*/(x=a)+(b=3)

/*合法的算術(shù)表達式*/492.復(fù)合的賦值運算符和復(fù)合的賦值表達式在賦值運算符“”前加上其他的運算符,可以構(gòu)成復(fù)合的賦值運算符。如在“”前加上“”運算符就構(gòu)成了

“”運算符。C語言提供了10種復(fù)合的賦值運算符,它們是+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=其中前5個是復(fù)合的算術(shù)賦值運算符,后5個是復(fù)合的位運算賦值運算符。復(fù)合的賦值運算符是雙目運算符,優(yōu)先級和賦值運算符相同,也是右結(jié)合性的。50由復(fù)合的賦值運算符構(gòu)成的賦值表達式的格式為:變量<運算符=>確定的值它等效于變量=變量<運算符>確定的值例如:51a+=5x*=y+7r%=p等價于a=a+5等價于x=x*(y+7)等價于r=r%p2.6.4

逗號運算符和逗號表達式52在C語言中逗號“,”也是一種運算符,稱為逗號運算符。逗號運算符的優(yōu)先級是最低的。其功能是把兩個表達式連接起來組成一個表達式,稱為逗號表達式。逗號表達式的一般形式為:表達式1,表達式2逗號表達式的求值過程是順序求解表達式1、表達式2的值,并以表達式2的值作為整個逗號表達式的值。逗號表達式的擴展形式為:表達式1,表達式2,……,表達式n表達式n的值作為整個逗號表達式的值。53例main(){inta=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等于6,而逗號表達式的值y(xab),(bc)是10。2.6.5

條件運算符和條件表達式54條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:表達式1?

表達式2:表達式3其求值規(guī)則為:如果表達式1的值為真,則以表達式2的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。條件表達式通常用于賦值語句之中。例如條件語句:

if(a>b)

max=a;else

max=b;可用條件表達式寫為max=(a>b)?a:b;執(zhí)行該語句的語義是:如a>b為真,則把a賦予max,否則把

b

賦予max。使用條件表達式時,還應(yīng)注意以下幾點:條件運算符的運算優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,但高于賦值符。因此max=(a>b)?a:b可以去掉括號而寫為max=a>b?a:b條件運算符?和:是一對運算符,不能分開單獨使用。條件運算符的結(jié)合方向是自右至左。例如:a>b?a:c>d?c:d應(yīng)理解為a>b?a:(c>d?c:d)這也就是條件表達式嵌套的情形,即其中的表達式c>d?c:d又是一個條件表達式。552.6.6

表達式小結(jié)56判斷表達式類型應(yīng)根據(jù)表達式中出現(xiàn)的運算符的優(yōu)先級來判定。如果某一運算符在整個表達式的運算過程中優(yōu)先級是最低的,或者是最后運算的運算符,那么表達式的類型就是該運算符所從屬的類型。例如:x=(a=3,b*3)x=a=3,6*a(x=8)>(y=9)+6(k=i++)/3*a是賦值表達式;是逗號表達式;是關(guān)系表達式;是算術(shù)表達式。2.7不同類型數(shù)據(jù)間的混合運算57C語言規(guī)定不同類型的數(shù)據(jù)不能夠直接進行運算,只有相同類型的數(shù)據(jù)才可以。但是在描述表達式時,參與運算的運算對象卻可以是不同類型的數(shù)據(jù),于是在表達式進行運算的時候存在類型的轉(zhuǎn)換問題。C語言中有兩種形式的類型轉(zhuǎn)換。2.7.1

類型的自動轉(zhuǎn)換1.賦值表達式中的自動轉(zhuǎn)換其轉(zhuǎn)換的依據(jù)是將賦值運算符右側(cè)的確定的值按照左側(cè)變量定義的類型,即要把確定的值轉(zhuǎn)換為變量定義的類型。為了方便描述,以下所有的示例都假定有如下的變量說明:inta;long

int

b;unsigned

int

c;floatx;char

c1;58實型數(shù)據(jù)賦給整型變量浮點型數(shù)據(jù)賦給整型變量轉(zhuǎn)換的方法是舍去浮點型數(shù)據(jù)的小數(shù)部分,將整數(shù)部分賦給整型變量。整型數(shù)據(jù)賦給浮點型變量整型數(shù)據(jù)賦給浮點型變量轉(zhuǎn)換的方法是數(shù)值保持不變,只是將整型數(shù)據(jù)以浮點型數(shù)據(jù)的形式

到相應(yīng)的浮點變量中。59(3)將一個double型數(shù)據(jù)賦給float變量時,截取其前面7位有效數(shù)字,存放到float變量的單元(32位)中。但應(yīng)注意數(shù)值范圍不能溢出。如:float

f;double

d=123.456789e100;f=d;就出現(xiàn)溢出的錯誤。將一個float型數(shù)據(jù)賦給double變量時,數(shù)值不變,有效位數(shù)擴展到64位,在內(nèi)存中以64位(bit)

。60(4)字符型數(shù)據(jù)賦給整型變量具體轉(zhuǎn)換的方法是將字符型數(shù)據(jù)的ASCII碼到整型變量的低字節(jié)中,整型變量的高字節(jié)的所有位

的是低字節(jié)的符號擴展(turbo

c)或補零。符號擴展:如果低字節(jié)的最 為0,則高字節(jié)的所有位全部擴展為0;如果低字節(jié)的最為1,則高字節(jié)的所有位全部擴展為1。例如:c1='A',a=c1整型變量a的值為65。字符型數(shù)據(jù)c1和整型變量a的

如圖2.4所示。61圖2.4

變量c1,a的c1:01000001a:000000000100000162(5)整型數(shù)據(jù)賦給字符型變量整型數(shù)據(jù)賦給字符型變量時的具體轉(zhuǎn)換方法是將整型數(shù)據(jù)的低字節(jié) 的內(nèi)容 到字符型變量中去,即“

截斷”。例如:c1=254運算后c1的ASCII碼值為254。字符型變量c1,整型常量254的

如圖2.6所示。254:c1:000000001111111011111110圖2.6

變量c1,常量254的63(6)int型數(shù)據(jù)賦給long

int型變量(符號擴展)int型數(shù)據(jù)賦給long int型變量時,具體轉(zhuǎn)換的方法是將int型數(shù)據(jù)的值 到long int變量的低字中。圖2.8

變量a,b的a:0

0

0

00

0

0

00

0

0

01

0

0

0b:0

0

0

00

0

0

00

0

0

00

0

0

00

0

0

00

0

0

00

0

0

01

0

0

064long int型數(shù)據(jù)賦給int

型或unsi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論