




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二章數(shù)據(jù)描述與基本操作數(shù)據(jù)描述數(shù)據(jù)類型常量變量類型轉(zhuǎn)換運(yùn)算符與表達(dá)式C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型*空類型void自定義類型typedef數(shù)值類型字符類型
char整型實(shí)型單精度型float雙精度型double短整型short長整型long整型int數(shù)組結(jié)構(gòu)struct聯(lián)合union數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.允許的操作基本數(shù)據(jù)類型類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned
int0~65535320~4294967295unsigned
longunsigned
short160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255一般用大寫字母是宏定義預(yù)處理命令,不是C語句直接常量:整型常量實(shí)型常量字符常量字符串常量常量定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:符號常量:用標(biāo)識符代表常量定義格式:#define
符號常量常量例符號常量舉例#definePRICE30main(){
intnum,total;num=10;total=num*PRICE;
printf("total=%d",total);}運(yùn)行結(jié)果:total=300整型常量(整常數(shù))三種形式:十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號表示。如12,-456,0八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示。如0123,011十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示。
如0x123,0xff例12與12L例30000為int型65536為longint
型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型常量后加字母l或L,就成為longint
型常量問題:0123=()100x123=()100xff=()1083291255問題:0123=()100x123=()100xff=()10實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù))表示形式:十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn))如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
實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float型字符常量定義:用單引號括起來的單個(gè)普通字符或轉(zhuǎn)義字符.
字符常量的值:該字符的ASCII碼值<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符例:‘A’’\101’’\x41’65‘A’——65,‘a(chǎn)’——97,‘0’——48,‘\n’——10轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示轉(zhuǎn)義字符舉例main(){printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");
printf("\\CProgram\\\n");
printf("Turbo\'C\'");}運(yùn)行結(jié)果:ABCIsay:”Howareyou?”\CProgram\Turbo‘C’main(){
printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志。hello\0例字符串“hello”在內(nèi)存中a
a\0例‘a(chǎn)’“a”例空串“”\0例:charch;
ch=“A”;例:charch;
ch=‘A’;
編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機(jī)數(shù)變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:
數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時(shí)賦初值決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識符變量的使用:先定義,后使用例1
intstudent;
stadent=19;/*Undefinedsymbol‘statent’infunctionmain
*/變量定義位置:一般放在函數(shù)或復(fù)合語句開頭main(){
inta,b=2;floatdata;a=1;data=(a+b)*1.2;
printf(“data=%f\n”,data);}變量定義可執(zhí)行語句main(){
inta,b=2;a=1;floatdata;data=(a+b)*1.2;
printf(“data=%f\n”,data);}整型變量占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字所占字節(jié)數(shù)short≤int≤long可用sizeof(類型標(biāo)識符)計(jì)算實(shí)型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存放例
#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é)果運(yùn)行結(jié)果:total=37.500000,ch1=d常量小結(jié)定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))符號常量:用標(biāo)識符代表常量
定義格式:#define
符號常量常量 是宏定義預(yù)處理命令,不是C語句常量后綴
L或l長整型
U或u無符號數(shù)
F或f浮點(diǎn)數(shù)常量類型
整數(shù),長整數(shù),無符號數(shù),浮點(diǎn)數(shù),字符,字符串,符號常數(shù),轉(zhuǎn)義字符常量小結(jié)(續(xù))整型常量
十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號表示 八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示實(shí)型常量
十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn))如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
默認(rèn)double型,在實(shí)型常量后加字母f或F為float型
字符常量:用單引號括起來的單個(gè)普通字符或轉(zhuǎn)義字符字符串常量:用雙引號(“”)括起來的字符序列,每個(gè)字符串
尾自動(dòng)加一個(gè)‘\0’作為字符串結(jié)束標(biāo)志變量小結(jié)概念:其值可以改變的量變量名與變量值變量定義的一般格式:
數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時(shí)賦初值變量的使用:先定義,后使用變量定義位置:一般放在函數(shù)開頭注意:沒有字符串變量,用字符數(shù)組存放不同類型數(shù)據(jù)間的轉(zhuǎn)換隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則:
不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)一般形式:(類型名)表達(dá)式說明:強(qiáng)制轉(zhuǎn)換得到所需類型,原變量類型不變混合運(yùn)算隱式轉(zhuǎn)換規(guī)則doublefloatlongunsignedintchar,short低高說明:必定的轉(zhuǎn)換運(yùn)算對象類型不同時(shí)轉(zhuǎn)換例:P.54例(int)(x+y)(int)x+y(double)(3/2)例main(){floatx;
inti;x=3.6;i=(int)x;
printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3精度損失問題較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生顯式轉(zhuǎn)換舉例C運(yùn)算符1.算術(shù)運(yùn)算符+-*/%++--(類型)2.賦值運(yùn)算符=及其擴(kuò)展賦值運(yùn)算符3.關(guān)系運(yùn)算符><==>=<=!=4.邏輯運(yùn)算符?。Γ|5.位運(yùn)算符<<>>~|^&6.條件運(yùn)算符?:7.逗號運(yùn)算符,8.指針運(yùn)算符*&9.求字節(jié)數(shù)運(yùn)算符sizeof10.分量運(yùn)算符.→11.下標(biāo)運(yùn)算符[]12.其它如函數(shù)調(diào)用運(yùn)算符()學(xué)習(xí)運(yùn)算符應(yīng)注意:(1)掌握運(yùn)算符的功能;(2)搞清運(yùn)算符與運(yùn)算量間的關(guān)系:要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型
(3)清楚運(yùn)算的優(yōu)先級;(4)明確結(jié)合方向(在一個(gè)運(yùn)算量的兩側(cè)有兩個(gè)相同優(yōu)先級別的運(yùn)算符,則按結(jié)合方向順序處理);(5)明白結(jié)果的類型(即表達(dá)式的類型)。算術(shù)運(yùn)算符和表達(dá)式基本算術(shù)運(yùn)算符:+-*/%結(jié)合方向:從左向右優(yōu)先級:->*/%>+-(2)(3)(4)說明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)“%”要求兩側(cè)均為整型數(shù)據(jù)
例5/2=2
-5/2.0=-2.5例5%2=1
-5%2=-11%10=
1
5%1=
05.5%2()算術(shù)運(yùn)算符和表達(dá)式(續(xù))自增、自減運(yùn)算符++--作用:使變量值加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*/說明:++--不能用于常量和表達(dá)式,如5++,(a+b)++++--結(jié)合方向:自右向左優(yōu)先級:-++-->*/%>+-
(2)(3)(4)注意++、--的副作用(p.58~59)例-i++-(i++)i=3;printf(“%d”,-i++);/*-3*/
j=3;printf(“%d,%d”,j,j++);/*4,3or3,3*/例-i++?
i=3;printf(“%d”,-i++);j=3;printf(“%d,%d”,j,j++);算術(shù)運(yùn)算符和表達(dá)式(續(xù))位運(yùn)算符位運(yùn)算是以二進(jìn)制位(bit)為基本單位進(jìn)行的運(yùn)算C語言提供了六種位運(yùn)算符:
~
按位取反 單目 優(yōu)先級2&
按位與 雙目 8 |
按位或 雙目 10^
按位異或 雙目 9<<
左移 雙目 5
>>
右移 雙目 5不同長度的數(shù)據(jù)進(jìn)行位運(yùn)算:將操作數(shù)右端對齊,左端補(bǔ)零(無符號數(shù))或補(bǔ)符號位(有符號數(shù))按位與運(yùn)算符&
0&0=0;1&0=0;0&1=0;1&1=1用途:清零保留某些位例:inti;i&0x00FF/*lowbyte*/i&0x8000/*themosthighbit*/
按位或運(yùn)算符|
0|0=0;1|0=1;0|1=1;1|1=1用途:置1取指定位值例:inta=9,b=5,c;
c=a|b;
printf("a=%d,b=%d,c=%d\n",a,b,c);/*9,5,13*/按位異或運(yùn)算符^
0^0=0;1^0=1;0^1=1;1^1=0用途:使特定位翻轉(zhuǎn)交換變量值,不用臨時(shí)變量例:inta,b,t;t=a;a=b;b=t;/*needtemporaryvariable*/a+=b;b=a-b;a-=b;/*possibilityofoverflow*/a^=b;b^=a;a^=b;按位取反運(yùn)算符~
~0=1;~1=0用途:特定位清零charc;inti;c&0xFD/*11111101*/i&0xFFFD/*1111111111111101*/
考慮移植性,可用:c&~0x02i&~0x02/*2byteintor4byteint*/左移運(yùn)算符<<
功能:
把<<左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由<<右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。用途:
無溢出時(shí),左移1位相當(dāng)于乘2,但快得多。例:inti=15;/*00001111*/i<<2;/*00111100=60*/
右移運(yùn)算符>>
功能:把>>左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,由>>右邊的數(shù)指定移動(dòng)的位數(shù)。有符號數(shù)右移:當(dāng)為正數(shù)時(shí),最高位補(bǔ)0;而為負(fù)數(shù)時(shí),符號位為1,最高位是補(bǔ)0或是補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。
TurboC規(guī)定補(bǔ)1——算術(shù)右移。用途:右移1位相當(dāng)于除以2,但快得多。unsignedcharc=241;/*11110001*/c>>2;/*00111100=60=241/4*/簡單賦值運(yùn)算符符號:=格式:變量標(biāo)識符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=<<=>>=&=^=|=~=含義:exp1op=exp2exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;賦值運(yùn)算符和表達(dá)式說明:結(jié)合方向:自右向左優(yōu)先級:14左側(cè)必須是變量,不能是常量或表達(dá)式賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型錯(cuò)誤:3=x-2*y;a+b=3;例
floatf;
inti;i=10;f=i;則f=10.0例
inti;i=2.56;
結(jié)果i=2;賦值運(yùn)算符和表達(dá)式(續(xù))例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/*表達(dá)式值為5,a,b,c值為5*//*b=5,a=5*//*表達(dá)式值11,c=6,a=11*//*表達(dá)式值10,a=10,b=4,c=6*//*表達(dá)式值5,a=5,b=10,c=2*/賦值表達(dá)式的值與變量值相等,且可嵌套賦值運(yùn)算符和表達(dá)式(續(xù))賦值運(yùn)算符和表達(dá)式(續(xù))賦值類運(yùn)算符的副作用及限制
C語言允許在一個(gè)表達(dá)式中使用一個(gè)以上賦值運(yùn)算符。
※對人的影響和副作用,易造成誤解。
1.程序盡可能寫得明了易懂一些;2.加上一些不必要的括號。
※對機(jī)器的副作用,不定解。交換律不再適用。例:a=12;a+=a-=a*a;/*a=-264
等價(jià)于a=a+(a=a-(a*a))*/
賦值運(yùn)算時(shí)的類型轉(zhuǎn)換“=”兩側(cè)類型不一致時(shí),要進(jìn)行類型轉(zhuǎn)換:整←實(shí):截掉小數(shù)部分實(shí)(單、雙精度)←整:數(shù)值不變,存為浮點(diǎn)整←char:整型低8位←char
整型高8位←0或符號位擴(kuò)展(因機(jī)器而不同)longint←int:符號位擴(kuò)展int←long
int:int←long
int
低16位longint←unsigned
int:高位補(bǔ)0整型←(字節(jié)數(shù)相同的)unsigned整型:原樣送入。
若超過整型表示范圍,會(huì)出錯(cuò)。unsigned←(字節(jié)數(shù)相同的)非unsigned
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 永磁同步電機(jī)無位置傳感器控制策略研究
- 老師工作總結(jié)模板
- 旅游可行性報(bào)告
- 2025年其它核材料及相關(guān)特殊材料項(xiàng)目發(fā)展計(jì)劃
- 面對精神病人護(hù)理小講課比賽
- 街道財(cái)務(wù)管理制度講解
- 企業(yè)信息化系統(tǒng)安全維護(hù)協(xié)議
- 項(xiàng)目季度工作總結(jié)與經(jīng)驗(yàn)分享報(bào)告
- 高新技術(shù)開發(fā)協(xié)議書
- 智能倉儲(chǔ)管理流程優(yōu)化項(xiàng)目
- 2025年高縣縣屬國企業(yè)公開招聘工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 第7課 課題二《清潔工具與生活·創(chuàng)意清潔工具設(shè)計(jì)》(說課稿)-2023-2024學(xué)年四年級下冊綜合實(shí)踐活動(dòng)浙教版
- DB11-T 1191.3-2024 實(shí)驗(yàn)室危險(xiǎn)化學(xué)品安全管理要求 第3部分:科研單位
- 醫(yī)療行業(yè)學(xué)生職業(yè)發(fā)展的路徑規(guī)劃
- 規(guī)范填寫臨時(shí)用電作業(yè)票
- 日間化療中心管理制度
- 第六講五胡入華與中華民族大交融-中華民族共同體概論
- 高中英語時(shí)態(tài)語法單選題100道及答案解析
- 建設(shè)工程施工專業(yè)分包合同 GF-2003-0213
- 2024解析:第二章聲現(xiàn)象-講核心(解析版)
- 2025年初級社會(huì)工作者綜合能力全國考試題庫(含答案)
評論
0/150
提交評論