版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式''''7/20/2023C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void(無值)定義類型typedef數(shù)值類型字符類型char枚舉類型enum整型浮點(diǎn)型單精度型float雙精度型double短整型short長整型long整型int數(shù)組結(jié)構(gòu)體struct共用體union<§3.1C語言的數(shù)據(jù)類型總覽''''7/20/2023C語言中的數(shù)據(jù),有常量和變量之分,它們分別屬于上述這些類型。本章將介紹基本類型中的整型、實(shí)型、字符型三種數(shù)據(jù),以及C語言中的部分運(yùn)算符與表達(dá)式。''''7/20/2023§3.2常量和變量3.2.1常量
1.概念
在程序運(yùn)行過程中,其值不能被改變的量稱為常量。
2.分類
(1)整型常量;例3,-7……(2)實(shí)型常量;例3.14,-789……(3)字符常量;例‘a(chǎn)’,’3’……(4)字符串常量;例“a”,“name”……(5)符號(hào)常量(第9章,略)。常量的類型,可通過書寫形式來判別。''''7/20/20232.3.2變量1.變量的概念以標(biāo)識(shí)符為名字,在程序運(yùn)行過程中,其值可以被改變的量稱為變量。2.變量的兩個(gè)要素(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。(2)變量值。在程序運(yùn)行過程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過變量名來引用變量的值。''''7/20/20233.標(biāo)識(shí)符命名規(guī)則(1)有效字符:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。(2)有效長度:隨系統(tǒng)而異,但至少前8個(gè)字符有效。如果超長,則超長部分被舍棄。例,由于student_name和student_number的前8個(gè)字符相同,有的系統(tǒng)認(rèn)為這兩個(gè)變量,是一回事而不加區(qū)別。在TCV2.0中,變量名(標(biāo)識(shí)符)的有效長度為1~32個(gè)字符,缺省值為32。''''7/20/2023(3)C語言的關(guān)鍵字不能用作變量名。注意:C語言對(duì)英文字母的大小敏感,即同一字母的大小寫,被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。思考題:在C語言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是同一個(gè)變量嗎?''''7/20/2023標(biāo)識(shí)符命名的良好習(xí)慣──見名知意:所謂“見名知意”是指,通過變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫)作變量名,或漢語拼音字頭作變量名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。注意:盡量避免用容易混淆的字符,如O和0,l和1,Z和2等。''''7/20/20234.變量的定義與初始化
在C語言中,要求對(duì)所有用到的變量,必須“先定義、后使用”;且稱“在定義變量的同時(shí)進(jìn)行賦初值的操作”為變量初始化。(1)變量定義的一般格式數(shù)據(jù)類型變量名1[,變量名2,……];例,floatradius,length,area;(2)變量初始化的一般格式數(shù)據(jù)類型變量名1=初值1[,變量名2=初值2,……];例,floatradius=2.5,length,area;
''''7/20/2023補(bǔ)充(不同進(jìn)制之間的轉(zhuǎn)換):1.二、八、十六進(jìn)制概念:(1)二進(jìn)制:每一位只有0和1兩個(gè)數(shù)碼,其運(yùn)算規(guī)則是逢二進(jìn)一。(2)八進(jìn)制:每一位由0~7中某一個(gè)數(shù)碼表示,其運(yùn)算規(guī)則是逢八進(jìn)一。(3)十六進(jìn)制:每一位由0~f中某一個(gè)數(shù)碼表示,其運(yùn)算規(guī)則是逢十六進(jìn)一。用0~9這十個(gè)數(shù)字表示十六進(jìn)制的0~9,用A,B,C,D,E,F(xiàn)這五個(gè)字母來分別表示10、11、12、13、14、15,字母不區(qū)分大小寫。從右往左數(shù),最右為最低位,最左為最高位。''''7/20/20232.二、八、十六進(jìn)制轉(zhuǎn)換為十進(jìn)制:
乘法(1)二進(jìn)制轉(zhuǎn)換為十進(jìn)制:二進(jìn)制數(shù)第0位(最右邊)的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方……例,二進(jìn)制數(shù)01100100,轉(zhuǎn)換為10進(jìn)制為:0*27+1*26+1*25+0*24+0*23+1*22+0*21+0*20=1000乘以多少都是0,所以我們也可以直接跳過值為0的位:1*26+1*25+1*22=100''''7/20/2023(2)八進(jìn)制轉(zhuǎn)換為十進(jìn)制:八進(jìn)制數(shù)第0位(最右邊)的權(quán)值是8的0次方,第1位的權(quán)值是8的1次方……例,八進(jìn)制數(shù)1507,轉(zhuǎn)換為10進(jìn)制為:1*83+5*82+0*81+7*80=839(3)十六進(jìn)制轉(zhuǎn)換為十進(jìn)制:十六進(jìn)制數(shù)第0位(最右邊)的權(quán)值是16的0次方,第1位的權(quán)值是16的1次方……例,十六進(jìn)制數(shù)2AF5,轉(zhuǎn)換為10進(jìn)制為:2*163+10*162+15*161+5*160=10997''''7/20/20233.十進(jìn)制轉(zhuǎn)換為二、八、十六進(jìn)制:除法(1)十進(jìn)制轉(zhuǎn)換為二進(jìn)制:
把要轉(zhuǎn)換的數(shù)除以2,得到商和余數(shù),將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。例,十進(jìn)制數(shù)6,轉(zhuǎn)換為2進(jìn)制為:(110)2''''7/20/2023(2)十進(jìn)制轉(zhuǎn)換為八進(jìn)制:10進(jìn)制數(shù)轉(zhuǎn)換成8進(jìn)制的方法,和轉(zhuǎn)換為2進(jìn)制的方法類似,惟一變化:除數(shù)由2變成8。
例,十進(jìn)制數(shù)120轉(zhuǎn)換成八進(jìn)制數(shù)為(170)8(3)十進(jìn)制轉(zhuǎn)換為十六進(jìn)制:10進(jìn)制數(shù)轉(zhuǎn)換成16進(jìn)制的方法,和轉(zhuǎn)換為2進(jìn)制的方法類似,惟一變化:除數(shù)由2變成16。
例,十進(jìn)制數(shù)120轉(zhuǎn)換成十六進(jìn)制數(shù)為(78)16''''7/20/20234.二進(jìn)制與八、十六進(jìn)制之間的轉(zhuǎn)換:(1)二進(jìn)制轉(zhuǎn)換為十六進(jìn)制:對(duì)二進(jìn)制數(shù)以4位為一段(從右往左分段),分別轉(zhuǎn)換為十六進(jìn)制數(shù)。11111101,10100101,10011011
F
D
,A
5
,
9
B
(2)十六進(jìn)制轉(zhuǎn)換為二進(jìn)制:1位16進(jìn)制數(shù)對(duì)應(yīng)轉(zhuǎn)換為4位2進(jìn)制數(shù)。''''7/20/2023對(duì)應(yīng)關(guān)系列表(僅列4位):二進(jìn)制數(shù)值
十進(jìn)制值
十六進(jìn)值1111
=8+4+2+1
=15
F1110
=8+4+2+0
=14
E1101
=8+4+0+1
=13D
1100
=8+4+0+0
=12
C
1011
=8+4+0+1
=11
B
1010
=8+0+2+0
=10
A1001
=8+0+0+1
=10
9....0001
=0+0+0+1
=1
10000
=0+0+0+0
=0
0''''7/20/2023(3)二進(jìn)制轉(zhuǎn)換為八進(jìn)制:對(duì)二進(jìn)制數(shù)以3位為一段(從右往左分段),分別轉(zhuǎn)換為八進(jìn)制數(shù)。111101010101001011
7
5
2
5
1
3
(4)八進(jìn)制轉(zhuǎn)換為二進(jìn)制:1位8進(jìn)制數(shù)對(duì)應(yīng)轉(zhuǎn)換為3位2進(jìn)制數(shù)。''''7/20/20233.3.1整型常量整型常量即整常數(shù),在C語言中可用三種形式表示:(1)十進(jìn)制。例10、36。(注:數(shù)字之間不允許有空格)(2)八進(jìn)制(以數(shù)字0開頭)。例012,代表(12)8,等于十進(jìn)制的1*81+2*80=10。(3)十六進(jìn)制(以數(shù)字0+小寫字母x開頭)。例0x100,代表(100)16,等于十進(jìn)制的1*162+0*161+0*160=256。§3.3整型數(shù)據(jù)''''7/20/20233.3.2整型變量
補(bǔ)充:在§3.1中介紹的C語言的基本數(shù)據(jù)類型中,除void型之外,各類型變量定義時(shí)可以帶有各種“修飾前綴”,用于明確基本數(shù)據(jù)的含義,以準(zhǔn)確地適應(yīng)不同情況下的要求:有符號(hào):signed無符號(hào):unsigned(注:一般不帶有此前綴均代表signed型,例int等價(jià)于signedint)長型:long(將數(shù)據(jù)的內(nèi)存字節(jié)數(shù)增加一倍)短型:short
1.整型變量分類:(1)按其有無符號(hào),可分為unsignedint,signedint兩類;(2)按其在內(nèi)存中所占字節(jié)數(shù)(或”位數(shù)“),可分為shortint,longint兩類(注:一般shortint等價(jià)于int)。''''7/20/20232.占用內(nèi)存字節(jié)數(shù)與值域:上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。一般用2字節(jié)表示一個(gè)int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。顯然,不同類型的整型變量,其值域不同。占用內(nèi)存字節(jié)數(shù)為n的(有符號(hào))整型變量,其值域?yàn)椋?2n*8-1~(2n*8-1-1);無符號(hào)整型變量的值域?yàn)椋?~(2n*8-1)。
例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-1~(22*8-1-1),即-32768~32767;一個(gè)unsigned型變量的值域?yàn)椋?~(22*8-1),即0~65535。''''7/20/2023要求記憶:int以及shortint:類型長度為2byte(16bit),值域?yàn)?32768~32767;unsignedint以及unsignedshortint:類型長度為2byte(16bit),值域?yàn)?~65535;longint:類型長度為4byte(32bit)。''''7/20/2023§3.4浮點(diǎn)型數(shù)據(jù)3.4.1浮點(diǎn)型常量
浮點(diǎn)型常量即實(shí)數(shù),其值有兩種表達(dá)形式:
(1)十進(jìn)制形式。例如3.14、9.8、3.、3.0。(2)指數(shù)形式。又稱“科學(xué)計(jì)數(shù)法”,格式為:<尾數(shù)>E(e)<整型指數(shù)>。例如3.0E+5=3*105等。3.4.2浮點(diǎn)型變量
按其精度(即“數(shù)據(jù)的有效范圍”)分為兩種:
(1)單精度型。類型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。
(2)雙精度型。類型關(guān)鍵字為double,一般占8個(gè)字節(jié)、提供15~16位有效數(shù)字。''''7/20/2023§3.5
字符型數(shù)據(jù)3.5.1字符常量1.定義用一對(duì)單引號(hào)括起來的單個(gè)字符,稱為字符常量。例,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字符C語言允許使用一種特殊形式的字符常量,就是以反斜杠“\”開頭的轉(zhuǎn)義字符。
見教材P48表3.3。
注意:如果反斜杠、單引號(hào)或雙引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:‘\\’、‘\‘’、‘\“’。''''7/20/2023[例3.1]main(){printf(“A\b\bB\b\bC\n”); }程序運(yùn)行結(jié)果如下:
CBA[例3.2]main(){printf(“Shesay,\”Thispictureisbeautiful!\”\n”); }程序運(yùn)行結(jié)果如下:
Shesay,”Thispictureisbeautiful!”''''7/20/2023[例3.3]用轉(zhuǎn)義字符輸出可打印字符和不可打印字符。
main()
{printf(“\x4F\x4B\x21\n”); /*等價(jià)于printf(“OK!\n”);*/
printf(“\x15\xAB\n”);
}程序運(yùn)行結(jié)果如下:
OK!
§?''''7/20/20233.5.2字符變量字符變量的類型關(guān)鍵字為char,一般占用1字節(jié)(8bit)內(nèi)存單元;signedchar的值域?yàn)?128~127,unsignedchar的值域?yàn)?~255。1.變量值的存儲(chǔ):
字符變量用來存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。例,charch1,ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ch1=’a’;ch2=’b’;/*給字符變量賦值*/''''7/20/20232.特性:字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼——一個(gè)無符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣,所以C語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。
[例3.4]字符變量的字符形式輸出和整數(shù)形式輸出。
main()
{charch1,ch2;
ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);
printf(“ch1=%d,ch2=%d\n”,ch1,ch2);
}
程序運(yùn)行結(jié)果:
ch1=a,ch2=b
ch1=97,ch2=98''''7/20/2023(2)允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。
[例3.5]字符數(shù)據(jù)的算術(shù)運(yùn)算。
main()
{charch1,ch2;
ch1=‘a(chǎn)’;ch2=‘B’;
/*字母的大小寫轉(zhuǎn)換*/
printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);
}程序運(yùn)行結(jié)果:ch1=A,ch2=b''''7/20/20233.5.3字符串常量1.字符串常量的概念和字符串長度字符串常量是用一對(duì)雙引號(hào)括起來的若干字符序列。字符串中字符的個(gè)數(shù)稱為字符串長度。長度為0的字符串(即一個(gè)字符都沒有的字符串)稱為空串,表示為“”(一對(duì)緊連的雙引號(hào))。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長度分別為14和13(空格也是一個(gè)字符)。
''''7/20/20232.字符串的存儲(chǔ)C語言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。注意:在源程序中書寫字符串常量時(shí),不必加結(jié)束字符‘\0’,否則畫蛇添足。
如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符'\0'是系統(tǒng)自動(dòng)加上的,它占用6字節(jié)而非5字節(jié)內(nèi)存空間。CHINA\0''''7/20/2023綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長度不同:字符常量的長度固定為1,而字符串常量的長度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志’\0’。''''7/20/2023§3.6算術(shù)運(yùn)算符與算術(shù)表達(dá)式
1.五種基本算術(shù)運(yùn)算符:
+、-(減法/取負(fù))、*、/、%(求余數(shù))(1)關(guān)于除法運(yùn)算/C語言規(guī)定:當(dāng)分子、分母均為整型數(shù)時(shí),為兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。
(2)關(guān)于求余數(shù)運(yùn)算%要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯(cuò)。''''7/20/20232.自增(++)、自減(--)運(yùn)算符:
自增運(yùn)算使單個(gè)變量的值增1,自減運(yùn)算使單個(gè)變量的值減1。
(1)自增、自減運(yùn)算符都有兩種用法:
①前置運(yùn)算──運(yùn)算符放在變量之前:++變量、--變量;
先使變量的值增(或減)1,然后再以變化后的值參與其它運(yùn)算,即先增減、后運(yùn)算。
②后置運(yùn)算──運(yùn)算符放在變量之后:變量++、變量--;變量先參與其它運(yùn)算,然后再使變量的值增(或減)1,即先運(yùn)算、后增減。
''''7/20/2023
[例3.6]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。main(){intx=6,y;printf("x=%d\n",x); /*輸出x的初值*/y=++x; /*前置運(yùn)算*/printf("x=%d,y=%d\n",x,y);y=x--; /*后置運(yùn)算*/printf("x=%d,y=%d\n",x,y);}程序運(yùn)行結(jié)果:x=6x=7,y=7x=6,y=7 思考題:如果將上例中“y=++x;”語句中的前置運(yùn)算改為后置(y=x++;),“y=x--;”語句中的后置運(yùn)算改為前置(y=--x;),程序運(yùn)行結(jié)果會(huì)如何?''''7/20/2023(2)說明:·自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。·自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的?!ぴ诒磉_(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。''''7/20/2023算術(shù)運(yùn)算符的優(yōu)先級(jí)別:操作符優(yōu)先級(jí)別++(加1)、--(減1)1-(單目取負(fù))2*(乘)、/(除)、%(取模)3+(加)、-(減)4''''7/20/20233.表達(dá)式和算術(shù)表達(dá)式:(1)表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來的、符合C語言語法規(guī)則的式子,稱為表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。(將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱為簡單表達(dá)式,其它表達(dá)式稱之為復(fù)雜表達(dá)式。)''''7/20/2023
(2)算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)表達(dá)式。4.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性:(1)所謂結(jié)合性是指:當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是C語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。''''7/20/2023(2)表達(dá)式求值①按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。②如果在一個(gè)運(yùn)算對(duì)象(或稱操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按C語言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然后再執(zhí)行加c的運(yùn)算。''''7/20/2023§3.7賦值運(yùn)算及賦值中的類型轉(zhuǎn)換1.賦值運(yùn)算:“=”就是賦值運(yùn)算符,它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值運(yùn)算的一般形式為:變量=賦值表達(dá)式;例如,intx=5,y;y=3+x*7-6;
注意:如果表達(dá)式值的類型與被賦值變量的類型不一致,系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。例,main(){inta=5;floatb;b=a;}相當(dāng)于b=5.0''''7/20/20232.復(fù)合的賦值運(yùn)算符:
復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。(例,+=、-=、*=、/=、%=等)復(fù)合賦值運(yùn)算的一般格式為:變量雙目運(yùn)算符=表達(dá)式└──┬──┘復(fù)合賦值運(yùn)算符它等價(jià)于:變量=變量雙目運(yùn)算符(表達(dá)式)。
例如,x+=3 /*等價(jià)于x=x+3*/y*=x+6 /*等價(jià)于y=y*(x+6),而不是y=y*x+6*/C語言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:+=,-=,*=,/=,%=; /*復(fù)合算術(shù)運(yùn)算符(5個(gè))*/&=,^=,|=,<<=,>>=; /*復(fù)合位運(yùn)算符(5個(gè))*/''''7/20/2023補(bǔ)充:當(dāng)一個(gè)語句由多個(gè)賦值運(yùn)算符串接時(shí),運(yùn)算順序從右往左:例,intb=5;b*=b+=4;分析:①b+=4;→b=9;②b*=9;→b=81;''''7/20/20233.賦值中的類型轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換):
補(bǔ)充:
TurboC系統(tǒng)中將字符型以及整型均看作有符號(hào)類型,其最高位均看作符號(hào)位。最高位為0代表正數(shù),最高位為1代表負(fù)數(shù);正數(shù)在存儲(chǔ)器中以其二進(jìn)制原碼存儲(chǔ),負(fù)數(shù)在存儲(chǔ)器中以其二進(jìn)制補(bǔ)碼存儲(chǔ)。
對(duì)于負(fù)數(shù),其原、補(bǔ)碼之間的轉(zhuǎn)換方法如下:
·原碼→補(bǔ)碼:除最高位外各位均取反;末位加1。
·補(bǔ)碼→原碼:方式同”原碼→補(bǔ)碼”??旖莘椒ǎ篶har型:補(bǔ)碼=256+原碼(例,-2的補(bǔ)碼為254)int型:補(bǔ)碼=65536+原碼(例,-2的補(bǔ)碼為65534)''''7/20/2023轉(zhuǎn)換規(guī)則:賦值號(hào)右邊的值轉(zhuǎn)變?yōu)橘x值號(hào)左邊變量所屬的類型。分為三種情況:(1)截位:賦值號(hào)右邊值的精度高于賦值號(hào)左邊變量的精度,將多余位數(shù)截掉。(2)補(bǔ)位:賦值號(hào)右邊值的精度低于賦值號(hào)左邊變量的精度,將缺的位數(shù)補(bǔ)上。(3)位數(shù)不變,內(nèi)容不變:適合于精度相同的數(shù)據(jù)類型之間互相賦值。(例,unsignedintshortint)''''7/20/2023(1)截位:又分為以下幾種情況。①int→char:保留低8位,將多余的高8位截去。例,chara=515;因?yàn)?515)10=(00000010|00000011)2
高位截去后,代表a=(00000011)2,代表ASCII碼為3的符號(hào)。②longint→int/shortint:保留低16位,將多余的高16位截去。③float/double→int:將小數(shù)部分舍去。例,intx=36.001;即x值為36。④double→float:截取前7位有效數(shù)字,結(jié)果會(huì)降低精度。例,floatd=3678.0756777;即d值為3678.075。''''7/20/2023(2)補(bǔ)位:又分為以下幾種情況。①整型→float/double:數(shù)值不變,但以float/double形式存入變量(即,具體在存儲(chǔ)器中占4字節(jié)/8字節(jié)存儲(chǔ)空間)。例,floatf=51;則在內(nèi)存中f存儲(chǔ)的是51.00000。
②char→int/shortint/longint:
·unsignedchar→整型:將char的具體值放入整型的低8位,不足的高位全補(bǔ)0。
·signedchar→整型:將char的具體值放入整型的低8位;若字符的最高位為0(代表正數(shù)),則不足的高位全補(bǔ)0;若字符的最高位為1(代表負(fù)數(shù)),則不足的高位全補(bǔ)1。''''7/20/2023例,signedchara=‘¥’;inti=a;
因?yàn)椤ぁ腁SCII碼為157=(10011101)2,其符號(hào)位(最高位)為1,則將高8位全部補(bǔ)1,則i=(1111111110011101)2(看作補(bǔ)碼),則其原碼為=(1000000001100011)2=-99。③int→longint:將int的具體值放入longint的低16位;若int的最高位為0則不足的高位全補(bǔ)0;若int的最高位為1則不足的高位全補(bǔ)1。''''7/20/20234.強(qiáng)制類型轉(zhuǎn)換:數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換的一般格式為:
(要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達(dá)式)當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a(等價(jià)于(double)(a))/*將變量a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2(等價(jià)于(float)(5)/2)/*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/注意:強(qiáng)制轉(zhuǎn)換類型得到的是一個(gè)所需類型的中間量,原表達(dá)式類型并不發(fā)生變化。例如,(double)a只是將變量a的值臨時(shí)轉(zhuǎn)換成一個(gè)double型的中間量,a的數(shù)據(jù)類型并未轉(zhuǎn)換成double型。''''7/20/2023[例3.7]#include“stdio.h”main(){inti1,i2;floatf1,f2;f1=34.25;f2=66.89;i1=(int)(f1+f2);i2=(int)f1+(int)f2;printf(“i1=%d,i2=%d\n”,i1,i2);}程序運(yùn)行結(jié)果:i1=101,i2=100''''7/20/20235.不同類型數(shù)據(jù)混合運(yùn)算時(shí)類型轉(zhuǎn)換規(guī)則(由C編譯程序自動(dòng)完成):
整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用)。(1)運(yùn)算步驟(方法):將運(yùn)算符兩邊不同類型
溫馨提示
- 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年河南信息統(tǒng)計(jì)職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫帶答案詳解
- 2026年天津城市職業(yè)學(xué)院單招職業(yè)傾向性考試題庫及完整答案詳解1套
- 保安測(cè)評(píng)面試題及答案
- 眉山社工面試題目及答案
- 公務(wù)員預(yù)選面試題及答案
- 2025年阿拉爾中泰聯(lián)紡紗業(yè)有限公司招聘備考題庫有答案詳解
- 2025年泉州市醫(yī)學(xué)會(huì)招聘工作人員備考題庫及答案詳解1套
- 中國鐵路太原局集團(tuán)有限公司2026年招聘高校畢業(yè)生1014人備考題庫有答案詳解
- 2025年海豐縣彭湃紀(jì)念醫(yī)院高層次及急需緊缺專業(yè)人才專項(xiàng)招聘備考題庫及答案詳解一套
- 成都市泡桐樹小學(xué)天府智造園分校2025年儲(chǔ)備教師招聘備考題庫及答案詳解1套
- 教改課題的選題與申報(bào)課件
- 2023年11月貴陽人文科技學(xué)院下半年公開招聘53名專職教師筆試歷年高頻考點(diǎn)難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
- 水質(zhì)分析儀安裝調(diào)試報(bào)告
- GB/T 2881-2023工業(yè)硅
- 在好的情緒里遇見更好的自己初中情緒管理主題班會(huì)-初中主題班會(huì)優(yōu)質(zhì)課件
- 教科版四年級(jí)上冊(cè)科學(xué)期末測(cè)試卷(含答案)
- 中國現(xiàn)當(dāng)代文學(xué)三十年框架圖
- 腸道微生態(tài)與人體健康
- 消防員心理健康教育(課件)
- 醫(yī)院診斷證明書word模板
- 財(cái)務(wù)三大報(bào)表簡介培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論