第7章基本類型_第1頁(yè)
第7章基本類型_第2頁(yè)
第7章基本類型_第3頁(yè)
第7章基本類型_第4頁(yè)
第7章基本類型_第5頁(yè)
已閱讀5頁(yè),還剩64頁(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)介

第7章基本類型1基本類型C語(yǔ)言的基本(內(nèi)置的)類型:整型(int):long、short和unsigned浮點(diǎn)型:float,double和longdouble字符型(char)布爾型(_Bool(C99))2整數(shù):有符號(hào)、無(wú)符號(hào)有符號(hào)數(shù):二進(jìn)制最高位(最左邊)為符號(hào)位,0:整數(shù),1:負(fù)數(shù)最大16位整數(shù):32,767(215–1),二進(jìn)制表示形式0111111111111111。最大32位整數(shù)是01111111111111111111111111111111,數(shù)值為2,147,483,647(231–1)。無(wú)符號(hào)整數(shù):最左邊位是數(shù)值的一部分最大的16位無(wú)符號(hào)整數(shù)65,535(216–1)。最大的32位無(wú)符號(hào)整數(shù)是4,294,967,295(232–1)。3有符號(hào)和無(wú)符號(hào)整數(shù)整型變量默認(rèn)有符號(hào)無(wú)符號(hào)數(shù):強(qiáng)制聲明unsigned類型。無(wú)符號(hào)數(shù):主要用于系統(tǒng)編程和低級(jí)的、與機(jī)器相關(guān)的應(yīng)用。4整型int型通常有32位,long位更多,short位更少。有/無(wú)符號(hào)+三種長(zhǎng)度(關(guān)鍵字)產(chǎn)生6種類型組合:shortint unsignedshortintint unsignedintlongint unsignedlongint關(guān)鍵字的順序沒(méi)有要求,“int”也可以省略longint可以縮寫為long。5整型6種整型的取值范圍隨機(jī)器的不同而不同。

C標(biāo)準(zhǔn)要求:shortint、int和longint中的每一種類型都要覆蓋一個(gè)確定的最小取值范圍。其次,長(zhǎng)度:longint>=int>=shortint6整型16位機(jī)器上整型通常的取值范圍:

類型

最小值最大值short

int(2Byte) –32,768 32,767unsigned

short

int 0 65,535int –32,768

32,767unsigned

int 0

65,535long

int(4byte) –2,147,483,648 2,147,483,647unsigned

long

int 0

4,294,967,2957整型32位機(jī)器上整型通常的取值范圍:

類型

最小值最大值short

int(2byte) –32,768 32,767unsigned

short

int 0 65,535int(4byte) –2,147,483,648 2,147,483,647unsigned

int 0 4,294,967,295long

int –2,147,483,648 2,147,483,647unsigned

long

int 0

4,294,967,2958整型64位機(jī)器上整型通常的取值范圍:

類型

最小值最大值 short

int –32,768 32,767 unsigned

short

int 0 65,535 int –2,147,483,648 2,147,483,647 unsigned

int 0 4,294,967,295 long

int –263 263–1 unsigned

long

int 0

264–1上述取值范圍并非C標(biāo)準(zhǔn)強(qiáng)制標(biāo)準(zhǔn)庫(kù)頭文件

<limits.h>

可以找到定義了每種整數(shù)最大值和最小值的宏。9C99中的整型提供了兩種附加的標(biāo)準(zhǔn)整型(至少64位):long

long

int

和unsigned

long

long

int.long

long

int

的取值范圍通常是–263(–9,223,372,036,854,775,808)到263–1(9,223,372,036,854,775,807).unsigned

long

long

int的取值范圍通常是

0到264–1(18,446,744,073,709,551,615).10整型常量常量是在程序中以文本形式出現(xiàn)的數(shù)。變量:溫度常量:密度,圓周率,匯率C語(yǔ)言允許用十進(jìn)制、八進(jìn)制和十六進(jìn)形式書寫整型常量。本質(zhì)上?二進(jìn)制11八進(jìn)制和十六進(jìn)制數(shù)八進(jìn)制數(shù):0~7編寫。每一位表示一個(gè)8次冪。237[八進(jìn)制]十進(jìn)制數(shù):

2×82+3×81+7×80=128+24+7=159。十六進(jìn)制數(shù):0~9加上A~F,A~F分別10~15。1AF[十六進(jìn)制]十進(jìn)制:1×162+10×161+15×160=256+160+15=431。12整型常量十進(jìn)制常量包含數(shù)字0~9,以非零數(shù)字開(kāi)頭: 1525532767八進(jìn)制常量包含數(shù)字0~7,以零開(kāi)頭: 0170377077777十六進(jìn)制常量包含數(shù)字0~9和字母a~f(大小寫均可),以0x開(kāi)頭: 0xf0xff0x7fff0xfF0xFF13不管什么進(jìn)制,對(duì)數(shù)本身沒(méi)有影響,計(jì)算機(jī)只識(shí)二進(jìn)制。整型常量常量沒(méi)有聲明(大?。┦M(jìn)制常量通常:int類型,超過(guò)int范圍,用longint,還大,編譯器會(huì)將其作為unsignedlongint來(lái)處理。八或十六進(jìn)制:編譯器將遍歷int,unsignedint,longint和unsignedlongint類型,直到找到適合的表示常量的類型。14整型常量常量后加上字母L(或l):強(qiáng)制編譯器把常量作為長(zhǎng)整型數(shù)來(lái)處理: 15L0377L0x7fffL常量后邊加上字母U(或u),指明無(wú)符號(hào)常量: 15U0377U0x7fffU常量長(zhǎng)且無(wú)符號(hào):組合字母L和U: 0xffffffffUL

字母L和U的順序和大小寫都沒(méi)有關(guān)系。15溫故而知新基本類型:整型、浮點(diǎn)型、字符、布爾整型三種長(zhǎng)度:short、int、long、longlong[C99]符號(hào):有/無(wú)整型常量十進(jìn)制常量包含數(shù)字0~9,以非零數(shù)字開(kāi)頭:

八進(jìn)制常量包含數(shù)字0~7,以零開(kāi)頭:十六進(jìn)制常量包含數(shù)字0~9和字母a~f(大小寫均可),以0x開(kāi)頭:加L(或l),加U(或u)16整型溢出算術(shù)運(yùn)算結(jié)果超出表示范圍。溢出表現(xiàn)跟操作數(shù)有無(wú)符號(hào)有關(guān)有符號(hào)溢出,程序的行為是沒(méi)有定義的(不確定的)。無(wú)符號(hào)溢出時(shí),掐頭取尾結(jié)果為正確結(jié)果模(余)除2n的結(jié)果,n:存儲(chǔ)運(yùn)算結(jié)果的位數(shù)。17eg.兩位十進(jìn)制相加,結(jié)果取兩位:56+78=134,取值34讀/寫整數(shù)無(wú)符號(hào)整數(shù)、短和長(zhǎng)整型整數(shù)需要一些新的轉(zhuǎn)換說(shuō)明符。無(wú)符號(hào)整數(shù),使用字母u、o或x。 unsignedintu;

scanf(“%u",&u);//十 printf("%u",u); scanf("%o",&u);//八 printf("%o",u); scanf("%x",&u);//十六 printf("%x",u);18讀/寫整數(shù)短整型:在d、o、u或x前面加上字母h: shorts;

scanf("%hd",&s); printf("%hd",s);長(zhǎng)整型:在d、o、u或x前面加上l。長(zhǎng)長(zhǎng)整型:在d、o、u或x前面加上ll。19程序:數(shù)列求和(改進(jìn)版)數(shù)列項(xiàng)或和可能超出int表示范圍。在16位int機(jī)器上,可能發(fā)生: Enterintegers(0toterminate):1000020000300000 Thesumis:-5536將變量改換成longint型進(jìn)行改進(jìn)。20intmain(void){

longn,sum=0;

printf("Thisprogramsumsaseriesofintegers.\n");printf("Enterintegers(0toterminate):");

scanf("%ld",&n);while(n!=0){sum+=n;

scanf("%ld",&n);}

printf("Thesumis:%ld\n",sum);

return0;}21intn;longsum=0;浮點(diǎn)型float:?jiǎn)尉雀↑c(diǎn)數(shù)double:雙精度浮點(diǎn)數(shù)longdouble:擴(kuò)展雙精度浮點(diǎn)數(shù)22浮點(diǎn)型float適合精度要求不嚴(yán)格的浮點(diǎn)數(shù)。

double為大部分的程序提供了足夠的精度。

longdouble很少用到。C標(biāo)準(zhǔn)沒(méi)有說(shuō)明三種float具體精度,因?yàn)椴煌?jì)算機(jī)存儲(chǔ)浮點(diǎn)數(shù)的方法可以不同。

大多數(shù)現(xiàn)代計(jì)算機(jī)和工作站都遵循IEEE754標(biāo)準(zhǔn)。23IEEE浮點(diǎn)標(biāo)準(zhǔn)提供了兩種主要的浮點(diǎn)數(shù)格式:float(32位)和double(64位)。

數(shù)值以科學(xué)計(jì)數(shù)法的形勢(shì)存儲(chǔ):符號(hào)、指數(shù)和小數(shù)。float:符號(hào)1位、指數(shù)8位(含1位符號(hào)),小數(shù)部分23位。最大值大約3.40×1038,其中精度是6個(gè)十進(jìn)制數(shù)字。(2^23-1)e(2^7-1)實(shí)際小數(shù)25,指數(shù)6位(2^25-1)e(2^5-1)=33554431e3124浮點(diǎn)類型IEEE標(biāo)準(zhǔn):類型

最小正值

最大值精度 float

1.17549

10–38

3.40282

1038 6digits double

2.22507

10–308

1.79769

10308 15digits不遵循IEEE標(biāo)準(zhǔn)的計(jì)算機(jī)上,該表無(wú)效。在一些機(jī)器上,float可以有和double相同的數(shù)值集合,或double可以有和long

double相同的數(shù)值。

25浮點(diǎn)類型可以在<float.h>中找到定義浮點(diǎn)型特征的宏。C99提供:實(shí)浮點(diǎn)型復(fù)浮點(diǎn)型:float_Complex、double_Complex、longdouble_Complex26浮點(diǎn)常量——多種書寫方式如果有指數(shù)(10的冪),必須在指數(shù)前放置字母E(或e)。符號(hào)(+或-)可以出現(xiàn)在字母E(或e)的后邊。57.0的有效寫法如下:57.057.57.0e057E05.7e15.7e+1.57e2570.e-127浮點(diǎn)常量默認(rèn)情況下,以雙精度數(shù)的形式存儲(chǔ)。只需單精度,常量末尾加F(或f)(如57.0F)。以longdouble格式存儲(chǔ),常量末尾加L(或l)(如57.0L)。28讀/寫浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù):用轉(zhuǎn)換說(shuō)明符%e、%f和%g。doublefloat,在e、f或g前放置字母l: doubled;

scanf("%lf",&d);

注意:只能在scanf函數(shù)格式串中使用l,不能在printf函數(shù)格式串中使用,e、f和g可用來(lái)格式輸出float或double型值。C99可加l,但不起作用l控制scanf讀緩存longdouble,在e、f或g前放置字母L。scanf("%Lf",&d);printf("%Lf",d);29溫故而知新基本類型:整型、浮點(diǎn)型、字符、布爾整型三種長(zhǎng)度:short、int、long、longlong[C99]符號(hào):有/無(wú)讀寫:%[h/l]d/u/o/x浮點(diǎn)float、double、longdouble讀寫:%[l/L]e/f/g字符本質(zhì)上是整數(shù)(編碼為8位二進(jìn)制),ASCII30字符型char字符如何顯示?printf(’A’);12*8點(diǎn)陣計(jì)算機(jī)用數(shù)字對(duì)字符編碼——學(xué)號(hào)值可以根據(jù)計(jì)算機(jī)的不同而不同,因?yàn)椴煌臋C(jī)器可能會(huì)有不同的字符集。例如,考試座位號(hào)31字符集最常用的字符集是ASCII(美國(guó)信息交換標(biāo)準(zhǔn)碼),它用7位代碼表示128個(gè)字符。0-9:0110000-0111001數(shù)字,數(shù)vs字,eg,9和’9’A-Z:1000001-1011010ASCII常被擴(kuò)展為8位代碼用于表示256個(gè)字符代碼,被稱為L(zhǎng)atin-1,提供一些西歐和許多非洲語(yǔ)言所需的字符。32字符

ASCII表ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34”66B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS40(72H104h9HT41)73I105i10LF42*74J106j11VT43+75K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE48080P112p17DCI49181Q113q18DC250282R114r19DC351383X115s20DC452484T116t21NAK53585U117u22SYN54686V118v23TB55787W119w24CAN56888X120x25EM57989Y121y26SUB58:90Z122z27ESC59;91[123{28FS60<92/124|29GS61=93]125}30RS62>94^126~31US63?95—127DEL33

字符集char型變量可賦值為任何單個(gè)字符: charch;

ch='a';/*lower-casea*/ ch='A';/*upper-caseA*/ ch='0';/*zero*/ ch='';/*space*/注意,字符常量需要用單引號(hào)括起來(lái),而不是雙引號(hào)。34字符操作C語(yǔ)言按小整數(shù)的方式處理字符。內(nèi)存視角(本質(zhì)),1字節(jié)的二進(jìn)制序列(ASCII碼)printf(“%d”,ch);ASCII碼:0000000~1111111(0~127)

‘a(chǎn)’為97,‘A‘為65,’0’為48,‘’為32。35字符操作以ASCII碼存貯字符:36charc1,c2;c1=97,c2=98;printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}運(yùn)行結(jié)果:a,b97,9801100001%c%da97顯示97字符操作字符常量實(shí)際上是int類型,而不是char類型。charch=‘a(chǎn)’;——ch=97;#defineCH‘A’——defineCH65370000009797不用管,實(shí)際值相同字符本質(zhì)int數(shù)值可以比較、算術(shù)運(yùn)算計(jì)算,使用它對(duì)應(yīng)的整數(shù)值。38字符操作——賦值運(yùn)算eg.假設(shè)采用ASCII碼字符集: charch; inti;

i='a';/*iisnow97*/ch=65;/*chisnow'A'*/ch=ch+1;/*chisnow'B'*/ch++;/*chisnow'C'*/39實(shí)現(xiàn)在字符間游走:ch++大小寫轉(zhuǎn)換:‘A’(65)-》’a’(97),間隔32‘A’+32=‘a(chǎn)’32=‘a(chǎn)’-’A’轉(zhuǎn)換因子字符操作——比較測(cè)試ch是否是小寫字母;是則轉(zhuǎn)化對(duì)應(yīng)大寫。 if('a'<=ch&&ch<='z') ch=ch-'a'+'A';//'A'-'a‘=65-97=-32具體數(shù)值隨字符集而有所不同,程序使用<,<=,>,和

>=

來(lái)進(jìn)行字符比較可能不易移植。40字符操作字符數(shù)的屬性之好處:eg.for循環(huán)控制:for(ch='A';ch<='Z';ch++)…字符數(shù)的屬性之缺點(diǎn):可能會(huì)導(dǎo)致編譯器無(wú)法檢查出來(lái)的錯(cuò)誤。導(dǎo)致編寫出諸如‘a(chǎn)’*‘b’/‘c’的無(wú)意義的表達(dá)式。

可能會(huì)妨礙程序的可移植性Eg,上述for語(yǔ)句利用A到Z連續(xù)編碼41有符號(hào)和無(wú)符號(hào)字符存在有符號(hào)和無(wú)符號(hào)兩種char類型。 signedcharsch; unsignedcharuch;有符號(hào)字符:–128~127,無(wú)符號(hào)型字符:0~255。一些編譯器按有符號(hào)處理,一些編譯器按無(wú)符號(hào)。大多數(shù)時(shí)候,沒(méi)有太大關(guān)系,不用關(guān)心。42算術(shù)類型整數(shù)類型charint枚舉(有序集合):學(xué)校專業(yè)浮點(diǎn)類型實(shí)數(shù)復(fù)數(shù)43轉(zhuǎn)義序列字符:普通字符:0-9,a-z,A-Z等,常量書寫:?jiǎn)我?hào)括起來(lái)特殊字符:不可見(jiàn)、(無(wú)法打印的或鍵入),如換行、制表符,需特殊表示法\n,\t轉(zhuǎn)義序列呈現(xiàn)這類特殊符號(hào)字符轉(zhuǎn)義序列數(shù)字轉(zhuǎn)義序列44字符轉(zhuǎn)義序列

名稱

轉(zhuǎn)義序列 Alert(bell) \a Backspace \b Formfeed \f Newline \n Carriagereturn \r Horizontaltab \t Verticaltab \v

Backslash \\

Questionmark \? Singlequote \' Doublequote \"方便但表示范圍有限(僅常用特殊字符)不包含所有無(wú)法打印的ASCII字符,如ESC無(wú)法表示ASCII字符以外的字符,西歐、非洲等8位(256)Latin-1用編號(hào)表示45數(shù)字轉(zhuǎn)義序列可以表示任何字符。

格式:\??????:字符的八進(jìn)制或十六進(jìn)制編碼(非十進(jìn)制)八進(jìn)制:如\33或\033。最多三位八進(jìn)制數(shù)十六進(jìn)制:如\x1b或\x1B。最多兩位十六進(jìn)制數(shù),x小寫,十六進(jìn)制數(shù)字不限大小寫。作為字符常量:?jiǎn)我?hào)括起來(lái)?!痋141’0141=97數(shù)字轉(zhuǎn)義序列隱晦,#define命名意義明確: #defineESC'\33'轉(zhuǎn)義序列可嵌入字符串中使用?!癶ello\n”46字符處理函數(shù)toupper庫(kù)函數(shù):小寫字母轉(zhuǎn)換成大寫字母,tolower反之:ch=toupper(ch);//ch-’a’+’A’toupper在ctype.h中聲明#include<ctype.h>C函數(shù)庫(kù)提供了其他有用的字符處理函數(shù)。47讀/寫字符scanf和printf用轉(zhuǎn)換說(shuō)明符%c對(duì)單個(gè)字符讀/寫:%c讀字符不會(huì)跳過(guò)空白、回車等字符,讀所有字符。掃描行結(jié)束符(檢查讀入字符是否為換行符)。do{ scanf(“%c”,&ch);}while(ch!=‘\n');//do循環(huán)循環(huán)結(jié)束后ch=?ch讀入行所有字符,只保留?如需跳過(guò)空白等字符,%c前面加空格:scanf("%c",&ch);48讀/寫字符gechar()和putchar()代替scanf函數(shù)和printf函數(shù)讀取字符。格式:putchar(ch);//printf(“%c”,ch)ch=getchar();//scanf(“%c”,&ch)gechar()和putchar()節(jié)約時(shí)間實(shí)現(xiàn)簡(jiǎn)單作為宏實(shí)現(xiàn)#define

getchar()getc(stdin)49讀/寫字符gechar還優(yōu)于scanf()函數(shù)——返回字符ch=getchar();scanf(“%c”,&ch)用getchar()掃描行結(jié)束(末尾’\n’):do{ ch=getchar();}while(ch!='\n');精簡(jiǎn)循環(huán)控制表達(dá)式調(diào)用gechar函數(shù):while((ch=getchar())!='\n');50讀/寫字符循環(huán)轉(zhuǎn)換為do{;}while((ch=getchar())!='\n');進(jìn)一步轉(zhuǎn)換為while((ch=getchar())!='\n');getchar()至少執(zhí)行一次甚至變量ch都可以不需要:while(getchar()!='\n');類似等式代入51while(getchar()!='\n')len++;統(tǒng)計(jì)行字符數(shù)讀/寫字符用getchar跳過(guò)若干空格,遇到第一個(gè)非空字符循環(huán)終止。while((ch=getchar())=='');while(getchar()=='');52混用getchar和scanf要小心例如,計(jì)算標(biāo)準(zhǔn)體重程序,性別“回車” printf("Enteraninteger:"); scanf("%d",&i); printf("Enteracommand:"); command=getchar();scanf愛(ài)剩飯輸入串不匹配格式串,退回緩沖區(qū)getchar不挑食讀入緩沖區(qū)任意字符53程序:確定用戶輸入消息的長(zhǎng)度Enteramessage:Brevityisthesoulofwit.Yourmessagewas27character(s)long.長(zhǎng)度包括空格和標(biāo)點(diǎn)符號(hào),不含結(jié)尾換行符??刹捎胹canf或getchar函數(shù)讀取字符,大多數(shù)C程序員愿意采用getchar函數(shù)。54#include<stdio.h>

intmain(void){charch;intlen=0;

printf("Enteramessage:");

ch=getchar();while(ch!='\n'){len++;ch=getchar();}printf("Yourmessagewas%dcharacter(s)long.\n",len);

return0;}55while(getchar()!='\n') len++;類型轉(zhuǎn)換計(jì)算機(jī)執(zhí)行算術(shù)運(yùn)算,通常要求操作數(shù)具有相同的位數(shù)和存儲(chǔ)方式。不同類型操作數(shù)進(jìn)行計(jì)算,C編譯器要先類型轉(zhuǎn)換,方便硬件實(shí)現(xiàn)。a(16位int)+b(32位longint),a先轉(zhuǎn)化成32位longintint與float運(yùn)算,將int轉(zhuǎn)換為float。56類型轉(zhuǎn)換類型隱式轉(zhuǎn)換:編譯器自動(dòng)處理的轉(zhuǎn)換,無(wú)需程序員介入。顯示轉(zhuǎn)換:程序員使用強(qiáng)制運(yùn)算符。57隱式類型轉(zhuǎn)換基本數(shù)據(jù)類型種類多,規(guī)則略微復(fù)雜算術(shù)轉(zhuǎn)換:算術(shù)或邏輯表達(dá)式中操作數(shù)的類型不同時(shí)賦值轉(zhuǎn)換:賦值運(yùn)算符右側(cè)表達(dá)式和左側(cè)變量的類型不匹配時(shí)。函數(shù)調(diào)用轉(zhuǎn)換:函數(shù)調(diào)用中使用的參數(shù)類型與對(duì)應(yīng)參數(shù)類型不匹配時(shí)。函數(shù)返回轉(zhuǎn)換:return語(yǔ)句中表達(dá)式的類型和函數(shù)返回值的類型不匹配時(shí)。58常用算術(shù)轉(zhuǎn)換多用于二元運(yùn)算,eg.floatx;inti;x+i;i——》float比x——》int更安全。int——》float,幾乎沒(méi)什么損失。float——》int,損失小數(shù)部分;更糟糕的是,如果(x超出int表示范圍),將得到?jīng)]有意義的結(jié)果。59常用算術(shù)轉(zhuǎn)換策略統(tǒng)一操作數(shù)類型:類型提升——將相對(duì)較狹小類型的操作數(shù)轉(zhuǎn)換成另一個(gè)操作數(shù)的類型。整型提升:shortint——》int。60類型提升規(guī)則(跟大碗)61高float

doublelongdoubleunsignedlong

longunsigned低intchar、short最好盡量避免使用無(wú)符號(hào)整數(shù),特別是不要把它和有符號(hào)整數(shù)混合使用。常用算術(shù)轉(zhuǎn)換示例 charc; shortints; inti; unsignedintu; longintl; unsignedlongintul; floatf; doubled; longdoubleld;

i=i+c; /*c——》int*/ i=i+s; /*s——》int*/ u=u+i; /*i——》unsignedint*/ l=l+u; /*u——》longint*/ ul=ul+l; /*l——》unsignedlongint*/ f=f+ul; /*ul——》float*/ d=d+f; /*f——》double*/ ld=ld+d; /*d——》longdouble*/62賦值類型轉(zhuǎn)換(削足適履)v=expr:expr——》左值v的類型 charc; inti; floatf; doubled;

i=c;/*c——》int*/ f=i;/*i——》float*/ d=f;/*f——》double*/63怎么削足浮點(diǎn)數(shù)賦值給整型變量,削小數(shù)部分。 inti;

i=842.97; /*iisnow842*/ i=842.97; /*iisnow-842*/expr結(jié)果超出左值取值范圍,掐頭取尾: charc; c=256+78;(0000

0001

0100

1110) c=10000;/***WRONG***/ i=1.0e20;/***WRONG***/ f=1.0e100;/***WRONG***/64溫故而知新 ——字符二進(jìn)制編碼,ASCII碼實(shí)質(zhì)上小整數(shù)操作:printf(),%d,%c賦值字符-》整型;整型-》字符比較大小寫轉(zhuǎn)換:ch=ch+‘a(chǎn)’-‘A’;for(ch='A';ch<='Z';ch++)…算術(shù)ch++;‘a(chǎn)’*‘b’/‘c’65溫故而知新 ——轉(zhuǎn)義序列字符轉(zhuǎn)義序列僅常用特殊字符,\n,\t方便但表示范圍有限()數(shù)字轉(zhuǎn)義序列\(zhòng)??????:字符的八進(jìn)制或十六進(jìn)制編碼(非十進(jìn)制)66溫故而知新 ——字符處理函數(shù)輸入scanf,getchar,getc,輸出printf,putchar,putc;大小寫轉(zhuǎn)換toupper(ch),tolower(ch);<ctype.h>67溫故而知新——處理文本掃描行結(jié)束(末尾’\n’):do{ ch=getchar();}while(ch!='\n');精簡(jiǎn)while(getchar()!='\n');確定消息長(zhǎng)度:while(getchar()!='\n') len++;68溫故而知新——類型轉(zhuǎn)換需求:操作數(shù)類型不同運(yùn)算要求操作數(shù)具有相同位數(shù)和存儲(chǔ)方式隱式,編譯器自動(dòng)算術(shù)賦值函數(shù)調(diào)用函數(shù)返回顯示(強(qiáng)制),程序員使用強(qiáng)制運(yùn)算符()69常用算術(shù)轉(zhuǎn)換策略統(tǒng)一操作數(shù)類型:類型提升——將相對(duì)較狹小類型的操作數(shù)轉(zhuǎn)換成另一個(gè)操作數(shù)的類型。整型提升:shortint——》int。70類型提升規(guī)則(跟大碗)71最好盡量避免使用無(wú)符號(hào)整數(shù),特別是不要把它和有符號(hào)整數(shù)混合使用。高float

doublelongdoubleunsignedlong

longunsigned低intchar、short強(qiáng)制類型轉(zhuǎn)換隱式轉(zhuǎn)換自動(dòng)完成,更大程度控制類型轉(zhuǎn)換需主動(dòng)進(jìn)行轉(zhuǎn)換。

強(qiáng)制類型轉(zhuǎn)換表達(dá)式格式如下: (類型名)表達(dá)式

72強(qiáng)制類型轉(zhuǎn)換求float型值小數(shù)部分:floatf,frac_part;

frac_part=f-(int)f;求均值floataverage;intsum,n;average=(float)sum/n;73強(qiáng)制類型轉(zhuǎn)換優(yōu)先級(jí)一元運(yùn)算符,優(yōu)先級(jí)高于二元運(yùn)算符: (float)sum/n

解釋為 ((float)sum)/n其他方法可以實(shí)現(xiàn)同樣的效果: average=sum/(float)n;

average=(float)sum/(float)n;強(qiáng)制轉(zhuǎn)任一操作數(shù),其余隱式轉(zhuǎn)換74強(qiáng)制類型轉(zhuǎn)換使用強(qiáng)制類型轉(zhuǎn)換來(lái)避免溢出: longi; intj=1000;

i=j*j;/*ov

溫馨提示

  • 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)論