版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計算機(jī)處理的對象是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式存在的,例如,姓名可以用一個字符數(shù)據(jù)表示,年齡可以用一個整數(shù)表示,各種商品的價格可以用實數(shù)表示等。為了能準(zhǔn)確、方便地用數(shù)據(jù)描述生活中的各種信息,C語言將數(shù)據(jù)劃分為不同的類型。本章學(xué)習(xí)C語言的基礎(chǔ)知識:數(shù)據(jù)類型、運算符與表達(dá)式。房間——內(nèi)存單元房號——單元地址預(yù)定房間——定義變量,inta,b;入住客人——變量賦值,a=3;在C語言中,各類數(shù)據(jù)是計算機(jī)處理的主要對象,這些數(shù)據(jù)在計算機(jī)處理過程中,也需要使用一個類似“容器”的東西加以表達(dá)和儲存,這通常是由常量和變量來完成的。常量:用來表達(dá)在程序運行過程中其值保持恒定的數(shù)據(jù)。變量:用來表達(dá)在程序運行過程中其值可以根據(jù)需要經(jīng)常更新的數(shù)據(jù)。想一想:常量中的數(shù)據(jù)是如何存入的?當(dāng)變量中的數(shù)據(jù)更新后,它原來的值到哪兒去了?計算機(jī)的數(shù)據(jù)在程序運行時,放在內(nèi)存的單元。只有當(dāng)存入某文件時才寫入磁盤,文件后面講。第三章數(shù)據(jù)類型、運算符和表達(dá)式掌握C的數(shù)據(jù)類型及其定義方法-P37掌握C運算符種類、運算優(yōu)先級、結(jié)合性-P365掌握不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算-P54掌握C表達(dá)式類型和求值規(guī)則3.1C的數(shù)據(jù)類型——P373.1C的數(shù)據(jù)類型整型字符型實型(浮點型)枚舉類型單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型共用體類型構(gòu)造類型基本類型指針類型空類型數(shù)據(jù)類型3.2常量與變量
一、常量1.什么是常量?常量是在程序運行過程中,其值不能被改變的量。2.常量的分類?常量直接常量符號常量:從其字面形式即可判斷的常量。如:12、3.5、‘a(chǎn)’:利用一個標(biāo)識符代表的常量。
例1:(直接常量)main(){
intr;floatl,s;r=10;l=2*3.14159*r;s=3.14159*r*r;
printf(“l(fā)=%f\n”,l);
printf(“s=%f\n”,s);}
例2:(符號常量)#definePI3.14159main(){
intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;
printf(“l(fā)=%f\n”,l);
printf(“s=%f\n”,s);}
3.符號常量的特點①符號常量的實際值易于修改。②符號常量意義較明確,屬準(zhǔn)常數(shù)。二、變量1.什么是變量?變量是指程序在運行過程中,其值會發(fā)生改變的量。inta;后a=4;a=8;?a發(fā)生了變化2.變量的屬性變量的屬性:變量名、變量類型、變量值
變量的定義格式:變量類型變量名如:charcup;
inta,b,c=10;floatx=2,y,z;3.變量的使用C語言中,對所有用到的變量作強(qiáng)制定義,即“先定義,后使用”。相當(dāng)于預(yù)定客房。聯(lián)想:原樣照印,遇%d從后面提數(shù)據(jù)。變量名的書寫規(guī)則:由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例如:下列標(biāo)識符中,不合法的變量名有:M.D.John,12%gf,1add,_ce36,age&,5thclass,lotus-1-2-3,cd*ef,float請思考為什么?提問同學(xué)。選變量名時,要做到“見名知意”例如:namest_agesum大小寫字母是兩個不同的字符,C變量名習(xí)慣用小寫字母表示。建議變量名的長度不要超過8個字符。變量名的含義:變量名實際上是一個符號地址,代表內(nèi)存單元的地址。相當(dāng)于房間號301。5(存儲單元)num例:num=5;例:sum=num;6(存儲單元)sum5(存儲單元)sum3.3整型數(shù)據(jù)一、整型常量1.十進(jìn)制整數(shù)。如123、-456、0。2.八進(jìn)制整數(shù)。以0開頭,如0123表示八進(jìn)制數(shù)123,即(123)8,等于十進(jìn)制數(shù)83。即:(123)8=
1×82+2×81+3×80=833.十六進(jìn)制整數(shù)。以0x開頭,如0x123代表
16進(jìn)制數(shù)123,即(123)16=1×162+2×161+3×160=291(6c)16=6×161+12×160=108二、整型變量
(一)整型變量的分類
基本型:以int
表示短整型:以shortint
或short
表示
1.類型長整型:以longint
或long
表示
(123l、123L)
無符號基本型(unsignedint)
無符號型無符號短整型(unsignedshort)
無符號長整型(unsignedlong)(-32768~32767)shortint
long數(shù)制轉(zhuǎn)換基本概念10進(jìn)制:逢10進(jìn)1,數(shù)碼01234567892進(jìn)制:逢2進(jìn)1,數(shù)碼0、1計算:1+1=?101+111=?8進(jìn)制:逢8進(jìn)1,數(shù)碼01234567計算:7+2=?13+17=?16進(jìn)制:逢16進(jìn)1,數(shù)碼0123456789ABCDEF計算:5+6=?A2+51=?10→2進(jìn)制:除2取余。計算:8→10→8進(jìn)制:除8取余計算:8→10→16進(jìn)制:除16取余計算:18→數(shù)制轉(zhuǎn)換基本概念10進(jìn)制:逢10進(jìn)1數(shù)碼0123456789,位權(quán)為103102101100故每位的數(shù)為相應(yīng)數(shù)碼*位權(quán),1234為1*103+2*102+3*101+4*100=1234(十進(jìn)制表示)2進(jìn)制:逢2進(jìn)1數(shù)碼0、1,位權(quán)為23222120故每位的數(shù)為相應(yīng)數(shù)碼*位權(quán),1101為1*23+1*22+0*21+1*20=13
(十進(jìn)制表示)8進(jìn)制:逢8進(jìn)1數(shù)碼01234567,位權(quán)為83828180故每位的數(shù)為相應(yīng)數(shù)碼*位權(quán),0017為0*83+0*82+1*81+7*80=15(十進(jìn)制表示)16進(jìn)制:逢16進(jìn)1數(shù)碼0123456789ABCDEF故每位的數(shù)為相應(yīng)數(shù)碼*位權(quán),00A3為0*163+0*162+10*161+3*160=17(十進(jìn)制表示)與2進(jìn)制對應(yīng)0 0000 000 0000 01 0001 001 0001 12 0010 010 0010 23 0011 011 0011 34 0100 100 0100 45 0101 101 0101 56 0110 110 0110 67 0111 111 0111 78 1000 1000 89 1001 1001 910 1010 1010 A11 1011 1011 B12 1100 1100 C13 1101 1101 D14 1110 1110 E15 1111 1111 F2.整型數(shù)據(jù)在內(nèi)存中的存放形式(補(bǔ)碼表示法:便于加減運算)inti;i=10;——也可用8421法處理10=(1010)22102522210余數(shù)0101首位8421法介紹(基本原理:15=23+22+21+20) |||| 8421如:11的2進(jìn)制=?16的2進(jìn)制=?反之,如已知1101是二進(jìn)制數(shù),求10進(jìn)制數(shù)。二進(jìn)制只有0、1,為何不出現(xiàn)2?逢2進(jìn)1八進(jìn)制只有01234567,逢8進(jìn)1十六進(jìn)制只有0~9,10以后要占兩位,必須用ABCDEF。F是多少?能出現(xiàn)G嗎?逢16進(jìn)1通用性的轉(zhuǎn)換方法:除H取余,正向。*權(quán)后相加,反向。思考:用二進(jìn)制進(jìn)行過渡。16進(jìn)制對應(yīng)4位,8進(jìn)制對應(yīng)3(17)10=10001=0001,0001=(11)16(1A)16=0001,1010=16+8+0+2+0=(28)10八進(jìn)制呢?同樣方法。(17)10=168421=10001=010,001=(21)8(17)8=001,111=8+4+2+1=(15)10
2.整型數(shù)據(jù)在內(nèi)存中的存放形式(補(bǔ)碼表示法:便于加減運算)inti;i=10;——也可用8421法處理10=(1010)22102522210余數(shù)0101首位00000000
0000101000000000
0000101011111111
111101011111111
11111011010的原碼取反取反后再加1,得-10的補(bǔ)碼10的表示法,正數(shù)的補(bǔ)碼等于它的原碼-10一個無符號整型變量中可以存放的正數(shù)的范圍比一般整型變量中正數(shù)的范圍擴(kuò)大一倍。只需一般了解。inta;/*變量a的數(shù)值范圍:-32768~32767*/unsignedintb;/*變量b的數(shù)值范圍:0~65535*/01111111
111111111111111
111111111符號位數(shù)據(jù)位3276765535(二)整型變量的字長TurboC:short和int是2個字節(jié)、long是4個字節(jié)(三)整型數(shù)據(jù)的數(shù)據(jù)范圍請看P43表。注意:①整型常量在給整型變量賦值的時候,一定要與其數(shù)據(jù)類型相匹配。②整數(shù)常量后加字母l或L,則是long型常量。③整數(shù)常量后加字母u或U,則是unsignedint
型常量。3.4實型數(shù)據(jù)——P45一、實型常量(小數(shù)、指數(shù))1.十進(jìn)制數(shù)小數(shù)形式如:0.123、123.0、.123、123.、0.0等。由整數(shù)、小數(shù)點、小數(shù)三部分組成。(必須有小數(shù)點)。2.指數(shù)形式如:123e3(相當(dāng)于123x103),或?qū)懗?23E3由尾數(shù)、e(或E)和指數(shù)三部分表示組成。尾數(shù)為十進(jìn)制整數(shù)或十進(jìn)制浮點數(shù),指數(shù)必須是整數(shù)。(注意三部分必須存在且有效)如:╳
e3╳2.1e3.5╳.e3╳e思考:為何錯?二、實型變量(一)實型變量的分類C實型變量分為單精度、雙精度、長雙精度。float型:字長32位(4個字節(jié))double型:字長64位(8個字節(jié))longdouble型:字長128位(16個字節(jié))(二)實型變量的定義單精度(float型)如:floatx,y;雙精度型(double型)如:doublea=10,b,c;例2.3main(){floata;doubleb;a=1234.111111;b=1234.111111;
printf(“a=%f,b=%f”,a,b);}輸出結(jié)果:a=1234.111084,b=1234.111111注意:float型的有效位數(shù)達(dá)到7位
double型的有效位數(shù)達(dá)到16位3.5字符型數(shù)據(jù)一、字符常量1.單引號括起來的一個字符:'T','7','!'2.轉(zhuǎn)義字符:指不能用符號直接表示的字符常量。將反斜杠(\)后面的字符轉(zhuǎn)變成另外的意義。如‘\n’中的n不代表字母n而作為“換行”符。例如:‘
\n
’換行,將當(dāng)前位置移到下一行的開頭
‘
\t
’橫向跳格(水平制表,占8列)
‘
\b
’退一格
‘
\r
’回車,將當(dāng)前位置移到本行的開頭
‘
\a
’報警
‘
\0
’空字符
‘\j’代表字符‘j’‘\'’單撇號字符‘\"’雙撇號字符‘\ddd’1到3位八進(jìn)制代表的字符-要會8進(jìn)制(’\165’->11710->’u’)‘\xdd’1到2位十六進(jìn)制代表的字符-要會16進(jìn)制(‘\x6c’->10810->’l’)
‘\\’反斜杠(‘\’字符)——考試“\\n”,出\n
main(){printf("12345678901234567890\n");printf("c\tlanguags\be\rC\n");—\t跳8格,\b退1格,\r回本行頭printf("is\tusef\165\x6c");——\165是u,\x6c是l}Clanguageisuseful二、字符型變量(一)字符變量的定義形式charc1,c2;(二)字符的長度:1個字節(jié)字符型變量用來存放一個字符常量。實際在內(nèi)存中存放的是該字符的ASCII碼值。main(){
inti;charc;i=97;c=’a’;
printf(“i=%c,c=%c\n”,i,c);
printf(“i=%d,c=%d”,i,c);}例:輸出結(jié)果:i=a,c=a
i=97,c=97
字符型數(shù)據(jù)和整型數(shù)據(jù)(0~255)之間可以通用。c=c+2;main(){
inti=298;
printf(“ASCII(%d)=%c\n”,i,i);}例:ASCII(298)=*(*的ASCII是298)00000001
00101010ASCII(42)=*298%256=42
main(){charbeep=‘\a’;
printf(“beep=%d%c\n”,beep,beep);}beep=7還會有一聲警告音三、字符串常量用雙引號括起來的一串字符序列。如:"ascii","7y677","8757gj\n"要點:注意:‘a(chǎn)’和“a”是完全不同的。
⑴字符串常量必須由雙引號括起。
⑵字符串常量的末尾有一個ASCII碼為0的字符(字符’\0’),作為字符串結(jié)束標(biāo)志。
字符串常量的存儲存儲:字符串中的字符依次存儲在內(nèi)存中一塊連續(xù)的區(qū)域內(nèi),并且把空操作字符‘
\0’自動附加到字符串的尾部作為字符串的結(jié)束標(biāo)志。故字符個數(shù)為n的字符串在內(nèi)存中應(yīng)占n+1個字節(jié)。后面講字符數(shù)組時要用到。例:c=“china”china\03.6運算符和表達(dá)式的簡介一、什么是運算符和表達(dá)式?1+2運算符運算量運算量C語言的表達(dá)式是由常量、變量、調(diào)用函數(shù)通過運算符連接起來的式子。二、C運算符
C的運算符見55頁按運算量的數(shù)量來分,C語言的運算符分為單目運算符、雙目運算符和三目運算符。如:++——單目運算符例:i++
+——雙目運算符例:a+b?:——三目運算符例:a?c:d三、C表達(dá)式
C語言使用的基本表達(dá)式有:⑴賦值表達(dá)式,如:a=3⑵算術(shù)表達(dá)式,如:3+4*2⑶關(guān)系表達(dá)式,如:3>2⑷邏輯表達(dá)式,如:3>5&&a>=b⑸條件表達(dá)式,如:a>b?a:b⑹逗號表達(dá)式,如:a=3,b=4,c=5四、表達(dá)式的求值規(guī)則
1.在有多個運算符的表達(dá)式中,按照運算符優(yōu)先級的高低進(jìn)行運算。(優(yōu)先級見附錄365頁)2.對于優(yōu)先級相同的表達(dá)式中,按照運算符的結(jié)合性來確定運算的次序。
a=b+d/3*83.7算術(shù)運算符和算術(shù)表達(dá)式——P551、基本的算術(shù)運算符:
+-(求正與求負(fù))*/%(乘、除、求余)
+-(加與減)說明:
a=-b;(1)在“/”運算中,若操作數(shù)均為整數(shù),則執(zhí)行整除運算,舍去小數(shù)部分。例如:5/3=1(2)“%”要求兩側(cè)均為整數(shù),“%”運算不能用于float和double
型數(shù)據(jù)例如:5%3=2
2、各類數(shù)值型數(shù)據(jù)間的混合運算一、運算過程:先自動轉(zhuǎn)換成同類數(shù)據(jù),再進(jìn)行運算。
二、轉(zhuǎn)換規(guī)則:低字長類型轉(zhuǎn)換成高字長類型。double←float
↑long
↑unsigned
↑int←char,short①向左的橫向箭頭表示即使在同一種數(shù)據(jù)類型間進(jìn)行運算時也要進(jìn)行轉(zhuǎn)換。用于提高精度。②向上縱向箭頭表示當(dāng)運算對象類型不同時的轉(zhuǎn)換方向。P54例:若有inti;floatf;doubled;longdoublee;判斷表達(dá)式:10+‘a(chǎn)’+i*f-d/e的類型(‘a(chǎn)’的ASCII是97)原則:向精度高的看齊。請思考:3/4?3.0/4?1/2*15*20?1.0/2*15*20?char8位,int16位float32位,double64位,longdouble128位intunsignedintlongintunsignedlongintdoubleshort,charfloat系統(tǒng)自動轉(zhuǎn)換3、強(qiáng)制類型轉(zhuǎn)換運算符一般形式:(類型名)(表達(dá)式)例如:(double)a+b;
(int)(x+y)功能∶把表達(dá)式的的值轉(zhuǎn)換成指定的類型。
輸出結(jié)果:x=3.600000,i=3注意:強(qiáng)制類型轉(zhuǎn)換后并不改變原來變量的類型請看下面程序段:main(){floatx,y;inti,j,k;x=3.6;i=(int)x;j=(int)x+5;k=(int)(x+3.6);printf(“x=%f,i=%d”,x,i);}3.8賦值運算符和賦值表達(dá)式——P59一、賦值運算符“=”賦值表達(dá)式的格式∶<變量>=<表達(dá)式>
如:num=5+3功能:將該運算符右側(cè)表達(dá)式的值賦給左側(cè)變量。要求:如果表達(dá)式類型與左邊的變量的類型不匹配,自動進(jìn)行類型轉(zhuǎn)換。結(jié)合方向(自右向左)P365:
x=y=a+b等價x=(y=a+b)復(fù)合運算符:
在賦值符“=”之前加上其他運算符,可以構(gòu)成復(fù)合的運算符。復(fù)合賦值運算符——優(yōu)點:書寫簡潔如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3
常見復(fù)合賦值運算符:
+=,–=,*=,/=,%=復(fù)合賦值運算的功能:與左邊的變量進(jìn)行復(fù)合運算后再賦給左邊變量。例:(賦值運算符和復(fù)合賦值運算符)
main(){
inta,b,c;a=b=c=5;從右向左
a=(b=8)+(c=9);/*a=17*/a=10;a+=a-=a*a;從右向左,先a=a-a*a;}賦值運算的順序:自右向左。
a=-180運算符說明:++自增,變量值加1––自減,變量值減13.9自增、自減運算符——P57i=i+1;i++;i=i-1;i--;自增運算符的另一種用法:++i、––i先使i的值加(減)1,再使用ii++、i––在使用i之后,使i的值加(減)1記憶:++i++(前加i后加)前加代表:用前加后加代表:用后加例:inti=5,j;j=++i;j=?i=?j=i++;j=?i=?舉例:
intj,i=3;j=++i;/*j的值為4*/j=i++;/*j的值為4,然后i的值變?yōu)?*/j=-i++;/*j的值-5,然后i的值變?yōu)?*/自右向左
i++;/*i=i+1;i為7*/j--;/*i=i-1;*/printf(“i=%d”,i++);printf(“i=%d”,++i);⑴自增、自減運算符只能用于變量,不能用于表達(dá)式。注意:如:╳(a+b)++╳5++╳(-i)++⑵使用時,應(yīng)避免歧義性。如:i+++j(i++)+j(3)自增、自減運算符的結(jié)合方向是自右向左
x=-i++x=-(i++)3.10逗號運算符和逗號表達(dá)式——P65表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n一、逗號表達(dá)式的一般形式二、逗號表達(dá)式的求解原則依次求式1、式2,直至表達(dá)式n,逗號表達(dá)式的值為式n的值。三、逗號運算符的優(yōu)先級
優(yōu)先級最低。其他運算全部完成后才進(jìn)行逗號運算。例:逗號表達(dá)式,其值為最后一項的值
main(){intx1,x2,a;x1=(a=3,6*3);x2=a=3,6*3;printf("x1=%dx2=%d\n",x1,x2);}輸出結(jié)果:x1=18x2=3main(){for(i=5,j=6;i+j>4;j--,i--)
語句部分}printf(“%f”,(x=x++,y=++y,x+y))i=2;printf(“%d,%d”,i,i++);3,2i=8,j=10printf(“%d,%d,%d,%d”,i,j,i++,j++);9,11,8,10關(guān)系運算符及表達(dá)式運算符>、<、==、>=、<=、!=優(yōu)先級低于算術(shù)、==和!=低于其它。但高于邏輯運算符。關(guān)系表達(dá)式:常量、變量及運算符構(gòu)成關(guān)系表達(dá)式如a>10或b<=9。結(jié)果:成立為1,不成立為0分析:a=3,問a>10的結(jié)果是什么?邏輯運算符及表達(dá)式邏輯運算符&&||!邏輯表達(dá)式:常量、變量及運算符構(gòu)成關(guān)系表達(dá)式通常用關(guān)系表達(dá)式+邏輯運算符構(gòu)成邏輯表達(dá)式。如a>10&&a<=20表示范圍是什么?分析:a=8,問(a>10)&&(a<=20)的結(jié)果是什么?上面關(guān)系、邏輯可構(gòu)成條件表達(dá)式,用于條件判斷。其值為成立1,不成立0。非0也成立。運算規(guī)則記憶:&&同0、1的乘,||同0、1的加。分析:1&&0,1||1,2&&3,3||1,a=3,!a結(jié)果?主要記憶要點:1.數(shù)據(jù)類型:整型、浮點、字符——對常量、變量記憶
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國孕婦營養(yǎng)保健品行業(yè)營銷模式及投資前景展望報告版
- 2024-2030年中國奧他米韋項目申請報告
- 2024-2030年中國大型購物中心行業(yè)經(jīng)營策略及投資規(guī)劃分析報告
- 2024-2030年中國國際電路租賃行業(yè)前景趨勢規(guī)劃研究報告
- 眉山職業(yè)技術(shù)學(xué)院《射頻電路與系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 茂名職業(yè)技術(shù)學(xué)院《編程語言基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度企業(yè)管理制度與勞動合同修訂及員工權(quán)益保障協(xié)議3篇
- 影視后期制作教案第01周-02-1圖層
- 2024事業(yè)單位工作長期合同工特殊工種安全協(xié)議樣本2篇
- 2024年標(biāo)準(zhǔn)采購合同管理細(xì)則版B版
- 軟件配置項測試說明
- 代付設(shè)計費協(xié)議書
- 2024淘寶村研究報告
- 人員穩(wěn)定性方案
- 老年人普法教育
- 財務(wù)管理與資本運作
- 2022-2023學(xué)年廣東省廣州市天河區(qū)部編版六年級上冊期末測試語文試卷(含答案)
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)計劃書 (二)
- 數(shù)字經(jīng)濟(jì)助推新時代經(jīng)濟(jì)高質(zhì)量發(fā)展
- 網(wǎng)絡(luò)安全運維服務(wù)方案
- 《流感疫苗》課件
評論
0/150
提交評論