C語言程序設(shè)計--第2章.ppt
《C語言程序設(shè)計--第2章.ppt》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計--第2章.ppt(87頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第2章基本數(shù)據(jù)類型與運算符,返回總目錄,目錄,2.1數(shù)據(jù)類型和取值范圍,2.2運算符,2.3輸入/輸出函數(shù),2.4習(xí)題二,返回總目錄,●基本要求:1)熟悉C語言的常用數(shù)據(jù)類型;2)熟悉C語言的常用運算符;3)熟練掌握輸入/輸出函數(shù)的使用?!駥W(xué)習(xí)重點:1)C語言運算符的使用;2)輸入/輸出函數(shù)的使用。,2.1基本數(shù)據(jù)類型和取值范圍,2.1.1基本數(shù)據(jù)類型和取值范圍,數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進行的操作,●數(shù)據(jù)類型總表,返回目錄,●基本類型及范圍(VisualC++6.0環(huán)境下),2.1基本數(shù)據(jù)類型和取值范圍,2.1.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●標(biāo)識符,定義:用來標(biāo)識變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字命名原則:見名知意不宜混淆如l與I,o與0,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●標(biāo)識符,例:判斷下列標(biāo)識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123,M.D.John,3days,#33,char,$123,a>b,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量,定義:程序運行時其值不能改變的量(即常數(shù))分類:符號常量:用標(biāo)識符代表常量定義格式:#define符號常量常量,如#definePRICE30,例符號常量舉例#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);},一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實型常量字符常量字符串常量,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---整型常量(整常數(shù)),三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0 x開頭,后跟0~9,a~f,A~F表示.如0 x123,0Xff,示例:0571=(377)100 x179=(377)100X179=(377)10,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---整型常量(整常數(shù)),兩種長度:整型常量按長度劃分為兩種:短整型和長整型(后綴為小寫字母l或大寫字母L),從長度來看:TurboC中默認為短整型,如-377是一個短整型數(shù),而-377l或-377L表示-377是長整型數(shù)。而在VisualC++6.0中默認為長整型,如-377、-377l或-377L均表示-377是長整型數(shù)。例:語句:printf(“%d,%d”,sizeof(-377),sizeof(-377L));在TurboC中的運行結(jié)果為:2,4而在VC中的結(jié)果為:4,4小結(jié):從數(shù)據(jù)類型角度來分析,整型常量默認為int類型,而加上后綴(l或L)后,就是longint類型。,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---實型常量(實數(shù)或浮點數(shù)),表示形式:十進制數(shù)形式:(必須有小數(shù)點)如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,實型常量的類型默認double型在實型常量后加字母f或F,認為它是float型例:語句:printf(“%d,%d”,sizeof(0.123),sizeof(0.123F));在TurboC和VC中的運行結(jié)果均為:8,4,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---字符常量,定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符.,字符常量的值:該字符的ASCII碼值,如‘a(chǎn)’‘A’‘?’‘\n’‘\101’,轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示,如‘A’——65,‘a(chǎn)’——97,‘0’——48,‘\n’——10,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---字符常量,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---字符常量,如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’?’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(?),例:‘A’-------’\101’-------’\x41’--------65,轉(zhuǎn)義字符示例:,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---字符常量,例轉(zhuǎn)義字符舉例main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\C\");},運行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’,例main(){printf(“Y\b=\n”);},運行結(jié)果:屏幕顯示:=打印機輸出:,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●常量---字符串常量,定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結(jié)束標(biāo)志,字符常量與字符串常量不同,例:charch;ch=“A”;,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,概念:其值可以改變的量變量名與變量值變量定義的一般格式:數(shù)據(jù)類型變量1[,變量2,…,變量n];,例:inta,b,c;floatdata;,決定分配字節(jié)數(shù)和數(shù)的表示范圍,合法標(biāo)識符,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;,變量初始化:定義時賦初值,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,例1intstudent;stadent=19;//本行語句有錯,符號“stadent”未定義,例2inta,b,c;c=a%b;//本行語句有錯,a、b沒有具體的值就參與運算,變量的使用:先定義,后使用,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,變量定義位置:一般放在函數(shù)開頭,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字short≤int≤long可用sizeof(類型標(biāo)識符)測量,#include"stdio.h"main(){printf("intlength=%d",sizeof(int));},VC運行結(jié)果:intlength=4,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,實型變量float:占4字節(jié),提供6~7位有效數(shù)字(跟C編譯系統(tǒng)有關(guān),將實型數(shù)據(jù)按指數(shù)形式存儲時,一般若以24位二進制位表示小數(shù)部分(含符號),則對應(yīng)的十進制有效數(shù)字為7位)double:占8字節(jié),提供15~16位有效數(shù)字,2.1基本數(shù)據(jù)類型和取值范圍,#includemain(){doublea=1.234567890123456789e18;floatb=a;printf("a=%.20le\n",a);printf("b=%.20le\n",b);},程序輸出結(jié)果為:c=1.23456789012345680000e18d=1.23456793955060940000e18,2.1.2常量與變量,●變量,字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術(shù)運算,例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/,沒有字符串變量,字符串用字符數(shù)組存放,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2常量與變量,●變量,變量綜合示例:#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;printf(“total=%f,ch1=%c\n”,total,ch1);},運行結(jié)果:total=37.500000,ch1=d,2.1基本數(shù)據(jù)類型和取值范圍,2.2運算符,2.2.1優(yōu)先級與結(jié)合規(guī)則,●運算符,返回目錄,2.2運算符,2.2.1優(yōu)先級與結(jié)合規(guī)則,●優(yōu)先級和結(jié)合規(guī)則總表,2.2運算符,2.2.1優(yōu)先級與結(jié)合規(guī)則,不同級別的運算符按運算符的優(yōu)先級別確定計算順序,優(yōu)先級別高(即優(yōu)先級別數(shù)?。┑倪\算符先計算:相同級別的運算符按結(jié)合規(guī)則確定計算順序。例:表達式3+4*(12-6)/(1+2)的計算順序為:(12-6)=6(1+2)=34*6=2424/3=83+8=11,●運算符的計算規(guī)則,2.2運算符,2.2.2賦值運算與連續(xù)賦值,在C中,運算符“=”是賦值運算符。簡單賦值運算的一般形式為:變量=表達式其功能是將一個表達式的值賦給變量。如下表達式a=b+c該式讀作將表達式b+c的值賦給a。其本意是改寫變量a的值,而不是判斷b+c與a是否相等,,●賦值運算,2.2運算符,2.2.2賦值運算與連續(xù)賦值,●連續(xù)賦值,在C語言中,賦值運算符的級別較低,為14級,并滿足右結(jié)合規(guī)則。因此表達式:x=y=z=1是連續(xù)賦值表達式,其功能相當(dāng)于如下表達式的功能x=(y=(z=1))它是先執(zhí)行表達式z=1,即將1賦給z,表達式值也為1,然后將表達式值1賦給y,即執(zhí)行y=1,表達式值也仍為1,再將表達式值1賦給x,即執(zhí)行x=1。,2.2運算符,2.2.3算術(shù)運算,結(jié)合方向:從左向右優(yōu)先級:----->*/%----->+-(2)(3)(4)說明:“-”可為單目運算符時,右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù),例5/2=2-5/2.0=-2.5,例5%2=1-5%2=-11%10=15%1=05.5%2(?),●基本算術(shù)運算符:+-*/%,2.2運算符,2.2.3算術(shù)運算,●自增、自減運算符++--,作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1),例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;,//k=4,j=4,//k=3,j=4,//4,//3,//c=20,a=4,//c=15,a=4,“先加后用”,“先用后加”,2.2運算符,2.2.3算術(shù)運算,●自增、自減運算符++--,說明:++--不能用于常量和表達式,如5++,(a+b)++++--結(jié)合方向:自右向左優(yōu)先級:-++-------->*/%----->+-(2)(3)(4),例-i++?-(i++)i=3;printf(“%d”,-i++);//-3,例-i++i=3;printf(“%d”,-i++);,2.2運算符,2.2.3算術(shù)運算,●自增、自減運算符++--,特別提示:慎用++,--運算符!!!,4,345,3,2,2,3,343,2,2,2,a=3;printf("%d,%d\n",a,a++);printf("%d\n",a);a=3;printf("%d,%d,%d,%d\n",++a,a++,a++,--a);,例,TC中結(jié)果:,VC中結(jié)果:,從例中可分析出:1、函數(shù)參數(shù)均按從右到左的順序求值;2、對于后置運算,都遵循“先用后加”規(guī)則,但“加”的時機不同,TC中是用后馬上加,這樣下個左邊的參數(shù)用到的值是加后的值,而在VC中,用后不馬上加,而是在函數(shù)調(diào)用(printf)完成后才加。,2.2運算符,2.2.3算術(shù)運算,●自增、自減運算符++--,特別提示:慎用++,--運算符!!!,由上例知,由于++,--運算符在不同版本的C編譯系統(tǒng)中使用時會出現(xiàn)非預(yù)期的結(jié)果,因此要慎用!例如:a=3;printf(“%d,%d”,a,a++);在有的系統(tǒng)中,函數(shù)參數(shù)是從左至右求值,輸出“3,3”,在多數(shù)系統(tǒng)(如TC和VC)中是從右至左求值,輸出“4,3”或“3,3”。因此,以上寫法不宜提倡,最好改寫成:a=3;b=a++;printf(“%d,%d”,a,b);或:a=3;b=a;a++;printf(“%d,%d”,a,b);則結(jié)果都是明確的(輸出“4,3”)。,2.2運算符,2.2.3算術(shù)運算,●自增、自減運算符++--,特別提示:慎用++,--運算符!!!,總之,不要編寫讓人很難看懂,也不知道系統(tǒng)會怎樣執(zhí)行的程序。所以,我們可以通過一些含++,--比較多的表達式來加深對其運算規(guī)則的理解,但在實際編程中,除非不得已,否則絕對不要編寫含++,--比較多的表達式。從上面的介紹可知,含++,--比較多的復(fù)雜語句或有歧義的語句完全可以用簡單易懂、結(jié)果明確的語句組替代。,2.2運算符,2.2.4關(guān)系運算,關(guān)系運算又稱為比較大小運算,它有六個運算符:>、>=、、>=、<、35>=35<353>2在數(shù)學(xué)上是恒成立的。但在C語言中,上式卻不成立,因為首先計算第一個大于號,其值為1,而后計算第二個大于號時,成為計算1>2,顯然不成立,其值為0。實際上,連續(xù)比較大小時,表示幾個條件同時滿足,因此若將上式改寫為條件表達式5>3x=y=z=0;++x||++y||++z;printf(“x=%dy=%dz=%d\n”,x,y,z);x=y=z=0;++x},程序運行結(jié)果為:,x=1y=0z=0 x=1y=1z=0 x=1y=1z=1x=1y=0z=0,2.2運算符,2.2.6位運算,●位運算操作符,表2.5位運算符號表,2.2運算符,2.2.6位運算,●異或運算,異或運算真值表見表2.6,即對應(yīng)位相同時為0,不同時為1.表2.6異或運算真值表,2.2運算符,2.2.6位運算,●移位運算,左移位運算a>b:右邊移出的部分將丟棄,左邊空出的高位部分填補方法則根據(jù)a是否為帶符號數(shù)又分為兩種:a為帶符號數(shù)時,左邊空出的高位部分用符號位填補;a為不帶符號數(shù)時,左邊空出的高位部分用0填補。,注意:參與運算的數(shù)以補碼形式出現(xiàn).,2.2運算符,2.2.6位運算,●例2.5,#includemain(){chara=-25,b=93,c;unsignedchard=-25;c=a},69-1-7024-4283-56,程序運行結(jié)果為:,2.2運算符,2.2.7條件運算,一般形式:expr1?expr2:expr3執(zhí)行過程,條件運算符可嵌套如x>0?1:(xb?a:c>d?c:d?a>b?a:(c>d?c:d),2.2運算符,2.2.7條件運算,例求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);,例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a(chǎn)’floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);},X=3,程序運行結(jié)果為:,2.2運算符,2.2.10求字節(jié)數(shù)(sizeof),1)sizeof計算類型占用字節(jié)數(shù)的形式為:sizeof(類型)2)sizeof計算變量占用字節(jié)數(shù)的形式有兩種:sizeof(變量)或sizeof變量,示例:#includemain(){inta=5;printf("%d\n",sizeof(int));printf("%d\n",sizeof(a));printf("%d\n",sizeofa);},222,運行結(jié)果為:,2.2運算符,2.2.11類型轉(zhuǎn)換,●算術(shù)運算類型轉(zhuǎn)換,算術(shù)運算中,當(dāng)兩個運算數(shù)類型相同時,運算結(jié)果類型與原類型相同,當(dāng)兩個運算數(shù)類型不同時,運算結(jié)果類型為級別較高的數(shù)據(jù)類型。類型級別高低按下述規(guī)則進行:,即字符型向整型轉(zhuǎn)換、整型向?qū)崝?shù)型轉(zhuǎn)換、短型向長型轉(zhuǎn)換、不帶符號型向帶符號型轉(zhuǎn)換。,例如表達式:5/2+3*4.5+2的運算結(jié)果為17.5,而不是18。因為5/2時,除法運算符“/”兩邊運算數(shù)的類型都為整數(shù),其運算結(jié)果類型也應(yīng)為整數(shù)類型,其值當(dāng)然為2,而不是2.5;乘法3*4.5兩邊運算數(shù)的類型不同,結(jié)果類型為級別高的類型,即實型,值為13.5,整個表達式值為17.5。如將上述表達式改寫為:5/2.0+3*4.5+2此時,其運算結(jié)果為18.0,而不是17.5,請讀者自行分析。,2.2運算符,2.2.11類型轉(zhuǎn)換,●算術(shù)運算類型轉(zhuǎn)換,2.2運算符,2.2.11類型轉(zhuǎn)換,●賦值轉(zhuǎn)換,執(zhí)行賦值運算變量a=表達式b時,若a、b類型相同,則直接將b賦給a即可,若a、b類型不同,則需先將b的類型轉(zhuǎn)換為a的類型后再賦值,這種類型轉(zhuǎn)換,我們稱之為賦值類型轉(zhuǎn)換。,2.2運算符,2.2.11類型轉(zhuǎn)換,●強制類型轉(zhuǎn)換,強制類型轉(zhuǎn)換的一般格式為:(目標(biāo)類型)表達式其功能是將表達式類型轉(zhuǎn)換為目標(biāo)類型,其轉(zhuǎn)換方法同賦值轉(zhuǎn)換。如:floata=3.1;inti;i=(int)a;則i的值為3。,2.2運算符,2.2.11類型轉(zhuǎn)換,●輸入/輸出類型轉(zhuǎn)換,示例:#includemain(){inta=15;charch=A;printf("%d\n",ch);printf("%X\n",a);},65F,程序運行結(jié)果為:,詳見“輸入/輸出函數(shù)”一節(jié),2.3輸入/輸出函數(shù),2.3.1格式化輸出函數(shù)printf,●printf()函數(shù)調(diào)用格式,#include,格式:printf(“格式字符串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù),輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息格式說明:%[flags][width][.precision][F|N|h|l]type,用于指定輸出格式普通字符或轉(zhuǎn)義序列:原樣輸出,返回目錄,2.3輸入/輸出函數(shù),2.3.1格式化輸出函數(shù)printf,●Type類型代碼及示例,,,,,,,,,,,,d,i,x,X,o,u,c,s,e,E,f,g,%%,十六進制無符號整數(shù),不帶符號十進制整數(shù),十進制整數(shù),指數(shù)形式浮點小數(shù),單一字符,字符串,八進制無符號整數(shù),小數(shù)形式浮點小數(shù),e和f中較短一種,去0,百分號本身,,,inta=567;printf(“%d”,a);,inta=255;printf(“%x”,a);,inta=65;printf(“%o”,a);,inta=567;printf(“%u”,a);,chara=65;printf(“%c”,a);,printf(“%s”,“ABC”);,floata=567.789;printf(“%e”,a);,floata=567.789;printf(“%f”,a);,floata=567.789;printf(“%g”,a);,printf(“%%”);,567,ff,101,567,A,ABC,5.677890e+002,567.789001,567.789,%,,p,指針,,inta=567;int*q=,FFF4,F(xiàn)FFF4,以無符號的十六進制形式輸出變量的地址,說明Type類型代碼字符與輸出項個數(shù)應(yīng)相同,按先后順序一一對應(yīng)。,,2.3輸入/輸出函數(shù),2.3.1格式化輸出函數(shù)printf,程序運行結(jié)果為:,●Type類型代碼及示例,34a=3,b=4,示例:main(){inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);},說明輸出類型轉(zhuǎn)換:格式字符與輸出項類型不一致,按指定type類型輸出。輸出類型轉(zhuǎn)換與賦值類型轉(zhuǎn)換規(guī)律相同。,,2.3輸入/輸出函數(shù),2.3.1格式化輸出函數(shù)printf,程序在VC中運行結(jié)果為:,●Type類型代碼及示例,u=-1u=4294967295,示例:main(){intu=-1;printf(“u=%d\n",u);printf(“u=%u\n”,u);},2.3輸入/輸出函數(shù),2.3.1格式化輸出函數(shù)printf,●可選格式說明符—寬度[width],定義輸出數(shù)據(jù)域?qū)?。?shù)據(jù)長度- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言程序設(shè)計
鏈接地址:http://m.kudomayuko.com/p-11494828.html