03 變量、數(shù)據(jù)類型和表達式_第1頁
03 變量、數(shù)據(jù)類型和表達式_第2頁
03 變量、數(shù)據(jù)類型和表達式_第3頁
03 變量、數(shù)據(jù)類型和表達式_第4頁
03 變量、數(shù)據(jù)類型和表達式_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計

2023翻轉(zhuǎn)課堂實用教程第3章變量、數(shù)據(jù)類型和表達式C語言的基本元素3.1C語言的運算符和表達式3.33.2C語言的數(shù)據(jù)類型3.1C語言的基本元素五類元素1)關(guān)鍵字2)標(biāo)識符3)運算符5)標(biāo)點符號有優(yōu)先級與漢語標(biāo)點符號含義一樣4)分隔符系統(tǒng)預(yù)定義的由程序員按照命名規(guī)則自行定義的分隔符是用來分隔其他的詞法符號1)關(guān)鍵字分類名稱數(shù)據(jù)類型定義typedef數(shù)據(jù)類型char,double,enum,float,int,long,short,struct,union,unsigned,void,signed,volatile,auto,extern,register,static,const運算符sizeof語句break,case,continue,default,do,else,for,goto,if,return,switch,while基本關(guān)鍵字表(32)系統(tǒng)預(yù)定義的詞法符號,有特定的含義,不允許用戶重新定義2)標(biāo)識符C語言的命名規(guī)則如下:字母(a-Z,A-Z),數(shù)字(0-9),下劃線(_);開頭不能是數(shù)字;不能和系統(tǒng)的關(guān)鍵字重名。用于定義宏名、變量名、函數(shù)名和自定義類型名等注意(1)標(biāo)識符區(qū)分大小寫;(2)標(biāo)識符的有效長度取決于具體的C編譯系統(tǒng);(3)標(biāo)識符的書寫一般采用具有一定實際含義的單詞,這樣可提高程序的可讀性;(4)標(biāo)識符不能與C語言的關(guān)鍵字同名,也不能與自定義函數(shù)或C語言庫函數(shù)同名。3)運算符算術(shù)運算符>

邏輯運算符>關(guān)系運算符

>

位運算符>賦值運算符>優(yōu)先級的先后順序:+,-,*,/>

&&,||,!

>>,>=,<,<=,==,!=>&,|,->=>遞增遞減運算符>地址運算符>逗號運算符>sizeof運算符

+=,-=>&>;>sizeof()4)分隔符5)標(biāo)點符號名稱空格符制表符換行符號注釋鍵盤上的鍵或?qū)懛崭矜ItabEnter(回車)//單行注釋/**/多行注釋分隔符標(biāo)點符號逗號、分號、冒號、花括號、圓括號一句話沒結(jié)束:使用逗號“,”,一句話結(jié)束:使用分號“;”{}表示包含的意思()給定較高的優(yōu)先順序如(x+y)*5,先計算小括號里的3.2C語言數(shù)據(jù)類型數(shù)據(jù)類型分類1基本類型構(gòu)造類型2指針類型3空類型43.2.1常量PK整型常量實型常量(實數(shù)或浮點數(shù))(1)十進制整數(shù):每個數(shù)字位是0~9,不能含有非十進制數(shù);(2)八進制整數(shù):最高位為0,每個數(shù)字位是0~7;

(3)十六進制整數(shù):以0x或0X開頭,每個數(shù)字位可以是0~9,A~F,其中A代表10,B代表11,C代表12,D代表13,E代表14,F(xiàn)代表15.(1)十進制數(shù)形式:必須有小數(shù)點,如0.123、.123、123.0、0.0。(2)指數(shù)形式:e或E之前必須有數(shù)字,指數(shù)必須為整數(shù).如12.3e3、123E2、1.23e4屬于合法的;

e-5、1.2E-3.5屬于不合法的。在C語言中,實數(shù)只用十進制表示3.2.1常量PK字符常量符號常量(1)字符常量只能用單引號括起來,不能用雙引號或其它括號。

如‘a(chǎn)’、‘b’、‘=’、‘+’、‘?’(2)字符常量只能是單個字符,不能是字符串。(3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。

如'5'和5是不同的。一般形式:#define標(biāo)識符常量案例3-2-1已知圓的半徑為1.5,求圓的面積。案例3-2-1運行結(jié)果:area=7.065#include"stdio.h"#definePI3.14//符號常量

main(){ doubler,area; area=PI*r*r; printf("area=%f",area); }符號常量注意事項1宏定義必須以#define開頭,標(biāo)識符和常量之間不加等于號,行末不加分號。宏定義#define應(yīng)該放在函數(shù)外部,這樣可以控制到程序結(jié)束。23符號常量的標(biāo)識符用大寫字母,變量標(biāo)識符用小寫字母,以示區(qū)別。為什么要定義變量數(shù)據(jù)類型表3.2.2變量定義變量就是要說明變量的數(shù)據(jù)類型,確定數(shù)據(jù)的解釋方式,讓計算機和程序員不會產(chǎn)生歧義。數(shù)據(jù)是放在內(nèi)存中的,變量是給這塊內(nèi)存起的名字說

明字符型短整型整型長整型單精度浮點型雙精度浮點型無類型數(shù)據(jù)類型charshortintlongfloatdoublevoidC語言自帶的例子:變量定義基本數(shù)據(jù)類型的長度表數(shù)據(jù)長度inta,b,c;floatm=7.9,n=15.45charh,q='#'例如:怎樣更改變量的值?說

明字符型短整型整型長整型單精度浮點型雙精度浮點型數(shù)據(jù)類型charshortintlongfloatdouble長

度124448類別名稱類型名取值范圍整型[有符號]整型int-2147483648~2147483647(-231~231-1)[有符號]短整型shot[int]-32768~32767(-215~215-1)[有符號]長整型long[int]-2147483648~2147483647(-231~231-1)無符號整型unsigned[int]0~4294967295(0

~232-1)無符號短整型unsignedshort[int]0~65535(0

~216-1)無符號長整型unsignedlong[int]0~4294967295(0

~232-1)字符型字符型char0~255實型(浮點型)單精度浮點型float約

(10-38~1038)雙精度浮點型double約(10-308~10308)基本數(shù)據(jù)類型及取值范圍表(1)整型變量的分類(2)整型變量的定義1.整型變量基本型:類型說明符為int,在內(nèi)存中占4個字節(jié)。短整型:類型說明符為shortint或者short,在內(nèi)存中占2個字節(jié)。長整型:類型說明符為longint或者long,在內(nèi)存中占4個字節(jié)。無符號型:類型說明符為unsigned。整型變量的定義一般形式為:

類型說明符變量1[=值1],變量2[=值2],…;例如:inta,b;//a,b為整型變量longx,y;//x,y為長整型變量注意:類型說明符與變量名之間至少要有一個空格間隔在一個類型說明符后,可定義多個相同類型的變量,但變量間要用逗號間隔;最后一個變量名后必須用分號“;”結(jié)束[]內(nèi)的為可選項,即為變量的初始化。案例3-2-2運行結(jié)果c=10案例3-2-2輸出格式驗證案例3-2-2程序代碼main(){inta,b,c;a=4;b=6;c=a+b;printf("a+b=%d\n",c);}(1)實型變量的分類(2)實型變量的定義2.實型變量單精度:類型說明符為float,在內(nèi)存中占4個字節(jié)。雙精度:類型說明符為double,在內(nèi)存中占8個字節(jié)。實型變量的定義一般形式為:

類型說明符變量1[=值1],變量2[=值2],…例如:floata,b,c;//a,b,c為單精度實型變量doublex,y,z;//x,y,z為雙精度實型變量注意:實型變量由有限的存儲單元組成,能提供的有效數(shù)字有限,這樣就存在舍入誤差;一個單精度實型變量只能保證7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。案例3-2-3運行結(jié)果area=19.625000案例3-2-3已知圓的半徑,求圓的面積案例3-2-3程序代碼main(){floatr=2.5,pi,area;pi=3.14;area=pi*r*r;printf("area=%f\n",area);}字符變量的定義3.字符變量字符變量的定義一般形式為:

類型說明符變量1[=值1],變量2[=值2],…例如:chara,b;//a,b為字符變量注意:字符變量用來存放字符常量,只能放一個字符;C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值;允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。案例3-2-4運行結(jié)果A,65B,66案例3-2-4字符變量應(yīng)用案例3-2-3程序代碼main(){inta;

charm;

a='A';//字符賦值給整型變量

m=66;//整數(shù)賦值給字符變量

printf("%c,%d\n",a,a);

printf("%c,%d\n",m,m);}4.轉(zhuǎn)義字符(控制字符)字符形式

ASCII代碼值

\n換行,將當(dāng)前位置移到下一行開頭10\t水平制表(跳到下—個tab位置)9\b退格,將當(dāng)前位置移到前一列8\r回車,將當(dāng)前位置移到本行開頭13\f換頁,將當(dāng)前位置移到下頁開頭12\\反斜杠字符“\”92\’單引號字符39\”雙引號字符34\ddd1到3位8進制數(shù)所代表的字符

\xhh1到2位16進制數(shù)所代表的字符

轉(zhuǎn)義字符及其含義(1)自動類型轉(zhuǎn)換5.數(shù)據(jù)類型轉(zhuǎn)換1+a+1.5是合法的嗎?若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算;轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉(zhuǎn)成long型后再進行運算;所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉(zhuǎn)換成double型,再作運算;char型和short型參與運算時,必須先轉(zhuǎn)換成int型;在賦值運算中,兩邊的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。轉(zhuǎn)換規(guī)則如下整型、實型、字符型可以混合運算,為什么?例如:

假設(shè)已指定i為整型變量,f為float型變量,d為double型變量,e為long型變量,表達式為:10+'a'+i*f-d/e,則表達式的運行次序是怎樣的?運行次序:第一步運行:i*f第二步運行:d/e第三步運行:10+'a'第四步運行:10+'a'+i*f

第五步運行:10+'a'+i*f-d/e案例3-2-5運行結(jié)果案例3-2-5程序代碼main(){inti=2;

floatf=1.5;

doubled=4.0;

longe=2;

printf("i*f=%f,i轉(zhuǎn)化為float類型參與運算",i*f);

printf("d/e=%lf,e轉(zhuǎn)化為double類型參與運算",d/e);

printf("10+'a'=%d,'a'轉(zhuǎn)化為int類型參與運算",10+'a');

printf("10+'a'+i*f=%f,int轉(zhuǎn)化為float類型",10+'a'+i*f);

printf("10+'a'+i*f-d/e=%lf,float轉(zhuǎn)化為double類型",10+'a'+i*f-d/e);

}案例3-2-5自動類型轉(zhuǎn)換i*f=3.000000,i轉(zhuǎn)化為float類型參與運算d/e=2.000000,e轉(zhuǎn)化為double類型參與運算10+'a'=107,'a'轉(zhuǎn)化為int類型參與運算10+'a'+i*f=110.000000,int轉(zhuǎn)化為float類型10+'a'+i*f-d/e=108.000000,float轉(zhuǎn)化為double類型(2)強制類型轉(zhuǎn)換5.數(shù)據(jù)類型轉(zhuǎn)換一般形式:(類型說明符)(表達式)例如:

(double)a將變量a強制轉(zhuǎn)換為double類型(int)(x+y)將x+y的值強制轉(zhuǎn)換為int類型(float)(7%3)將7%3的值強制轉(zhuǎn)換為float類型

(float)x/y將x強制轉(zhuǎn)換成float類型后,再參與運算

注意:

表達式應(yīng)該用括號括起來。進行強制類型轉(zhuǎn)換時,得到的是一個所需類型的中間變量,原來變量的類型并未發(fā)生改變案例3-2-6強制類型轉(zhuǎn)換main(){ floatf; f=7.8; printf("(int)f=%d,f=%f\n",(int)f,f);}案例3-2-6,運行結(jié)果(int)f=7,f=7.8000003.2.3課堂練習(xí)題1.D)default2.B)'\x43‘3.C)2.04.A)8,16,105.B)3,E6.A)構(gòu)成C程序的基本單位是函數(shù)7.C).2E0 8.B)_2Test9.

D)double10.D)11133.3C語言的運算符和表達式1.算術(shù)運算符分類3.3.1算術(shù)運算符和算術(shù)表達式(1)加法“+”;(2)減法“–”,或負(fù)值運算符;(3)乘法“

”;(4)除法“/”,如7/2=3,整除結(jié)果為整數(shù),舍去小數(shù),只取商。(5)求?!?”,或稱求余運算符,要求兩側(cè)均為整數(shù),如9%2=1。2.算術(shù)運算符優(yōu)先級從高到低順序:()>

、/、%>+,–,單目運算符的優(yōu)先級高于雙目運算3.自增自減運算符(1)作用:自增運算使單個變量的值增1,自減運算使單個變量的值減1(2)運算規(guī)則:前置運算:運算符放在變量之前:++a、--a,先使變量的值增(或減)1,然后再以變化后的值參與其它運算,即先增減、后運算。后置運算:運算符放在變量之后:a++、a--,變量先參與其它運算,然后再使變量的值增(或減)1,即先運算、后增減。例如:3.3.1算術(shù)運算符和算術(shù)表達式inti=3,j;j=++i; i的值先加1后變成4,再賦給j,j的值為4j=i++; 先將i的值3賦給j,j的值為3,然后i加1后

變?yōu)?注意:(1)++和--只能用于變量,而不能用于常量或表達式。如:(i+j)++或5--合法嗎?(2)++和--的結(jié)合方向是“自右至左”。如:i=4,則-i--相當(dāng)于-(i--)結(jié)果為-4,而i的值為3。(3)運算符的組合原則是自左而右。如:a+++b等價于(a++)+b,而不是a+(++b)。(4)++和--常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,指針變量中,使指針上移(或下移)一個位置。案例3-3-1自增自減驗證案例3-3-1程序代碼:main(){ inti=3,j; j=i++; printf("i=%d,j=%d\n",i++,j); j=++i; printf("i=%d,j=%d\n",++i,j); j=--i; printf("i=%d,j=%d\n",i--,j); j=i--; printf("i=%d,j=%d\n",--i,j);}案例3-3-1,運行結(jié)果:i=4,j=3i=7,j=6i=6,j=6i=3,j=5例如:3.3.1算術(shù)運算符和算術(shù)表達式a*b/c-1.5+’a’注意:4.算術(shù)表達式(1)與數(shù)學(xué)表達式的書寫形式的區(qū)別:C語言算術(shù)表達式的乘號(*)不能省略。例如:b2-4ac,應(yīng)該寫成b*b-4*a*c。C語言表達式中只能出現(xiàn)字符集允許的字符。例如:πr2應(yīng)該寫成PI*r*r。C語言算術(shù)表達式不允許有分子分母的形式。例如:(a+b)/(c+d)不等于a+b/c+d。C語言算術(shù)表達式只使用圓括號改變運算的優(yōu)先順序(不能用{}[])。(2)各運算符的“優(yōu)先級”和“結(jié)合性”:在表達式求值時,按運算符的優(yōu)先級高低次序執(zhí)行,如:a-b*c等價于a-(b*c)。如果優(yōu)先級別相同,則按規(guī)定的“結(jié)合方向”,如表達式:a-b+c結(jié)合性為“自左向右”,所以等價于(a-b)+c。C對于復(fù)雜表達式為了清晰起見可以加圓括號“()”強制規(guī)定計算順序。1.賦值運算符3.3.2賦值運算符和賦值表達式符號:“=”為賦值運算符作用:將賦值運算符右邊的表達式的值賦給其左邊的變量。2.復(fù)合賦值運算符在賦值符“=”之前加上其它二目運算符可構(gòu)成復(fù)合賦值符如:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=X=y=12注意:在賦值號“=”的左邊只能是變量,而不能是常量或表達式2=x?x+y=a+b?一般形式:變量

復(fù)合賦值符=表達式

變量=變量

運算符

表達式例如:a+=5等價于a=a+5x*=y+7等價于x=x*(y+7)r%=p等價于r=r%p(1)

定義賦值表達式由賦值運算符組成的表達式稱為賦值表達式一般形式:變量=表達式(2)功能計算表達式的值再賦予左邊的變量例如:x=5

x=7%2+(y=5)a=(b=6)或a=b=6a+=a*(a=5)

a+=a-=a*a如果a的初值為4,此賦值表達式的求解步驟?(1)賦值表達式加上一個分號則可構(gòu)成賦值語句,即:變量=表達式;(2)賦值語句不是表達式,表達式可以用在其它語句或表達式中,而語句只能作為一個單獨的語句使用;(3)C語言規(guī)定:可以在定義變量的同時給變量賦值,也叫給變量初始化。例如:intx=5;(4)賦值運算時,當(dāng)賦值運算符兩邊數(shù)據(jù)類型不同時,系統(tǒng)自動進行類型轉(zhuǎn)換,轉(zhuǎn)換原則是:先將賦值號右邊表達式類型轉(zhuǎn)換為左邊變量的類型,然后賦值。注意:構(gòu)成3.3.3逗號運算符與逗號表達式用逗號“,”運算符,逗號運算符又稱順序求值運算符。

表達式一般形式:表達式1,表達式2,……,表達式n注意:(1)逗號表達式的求解過程為:先求解表達式1,再求解表達式2,依次類推。結(jié)合性自左向右。(2)表達式n的值就是整個逗號表達式的值。

(3)

逗號運算符的優(yōu)先級是所有運算符中最低的。案例3-3-2逗號表達式使用案例3-3-2程序代碼:main(){ inta=2,b=3,c=4,x,y; y=(x=a+b,b+c,x+c); printf("x=%d,y=%d\n",x,y);}案例

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論