第4講_標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型_第1頁(yè)
第4講_標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型_第2頁(yè)
第4講_標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型_第3頁(yè)
第4講_標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型_第4頁(yè)
第4講_標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)系統(tǒng)開(kāi)發(fā)技術(shù)第4講 標(biāo)識(shí)符與數(shù)據(jù)類(lèi)型基本C語(yǔ)言的語(yǔ)法 標(biāo)識(shí)符與關(guān)鍵字 變量與常量 C語(yǔ)言數(shù)據(jù)類(lèi)型C語(yǔ)言的字符集 C語(yǔ)言的基本符號(hào)可以分為4類(lèi) 英文字母:大小寫(xiě)26個(gè),共52個(gè); 阿拉伯?dāng)?shù)字:0-9共10個(gè)數(shù)字; 下劃線(xiàn)與分號(hào): 特殊符號(hào): 運(yùn)算符、分隔符標(biāo)識(shí)符 標(biāo)識(shí)符定義 用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、類(lèi)型名、文件名等的有效字符序列; 標(biāo)識(shí)符的規(guī)則 標(biāo)識(shí)符只能由字母、數(shù)字和下劃線(xiàn)三種字符組成,且第一個(gè)字符必須為字母或下劃線(xiàn); C 語(yǔ)言中的標(biāo)識(shí)符大小寫(xiě)敏感; 用戶(hù)自定義的標(biāo)識(shí)符不能與關(guān)鍵字同名;標(biāo)識(shí)符 示例:下面那些標(biāo)識(shí)符是正確的?Arena、 1stte

2、st、 arena s_count、marks40、 oh!god、 class_one、start. end、int關(guān)鍵字 關(guān)鍵字的概念 就是對(duì)編譯器具有特定含義的標(biāo)識(shí)符,是標(biāo)識(shí)符的一個(gè)特殊的集合。 C中的關(guān)鍵字 C語(yǔ)言中ANSI標(biāo)準(zhǔn)制定的關(guān)鍵字共有32個(gè); 所有的關(guān)鍵字小寫(xiě) 系統(tǒng)內(nèi)置的標(biāo)識(shí)符不要用于用戶(hù)定義的標(biāo)識(shí)符系統(tǒng)內(nèi)置的標(biāo)識(shí)符不要用于用戶(hù)定義的標(biāo)識(shí)符C語(yǔ)言關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotointiflongregistereturnshortsignedsizeofstat

3、icstructswitchtypedefunionunsignedvoidvolatilewhileC語(yǔ)言數(shù)據(jù)存儲(chǔ) 數(shù)據(jù)的存儲(chǔ)使用變量或常量表示15內(nèi)存中的數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)1515內(nèi)存內(nèi)存通過(guò)變量,可以為內(nèi)通過(guò)變量,可以為內(nèi)存中的位置提供一個(gè)存中的位置提供一個(gè)有意義的名稱(chēng)有意義的名稱(chēng)變量 變量 程序要為每一項(xiàng)數(shù)據(jù)分配內(nèi)存,通常使用變量來(lái)存儲(chǔ)數(shù)據(jù)。使用變量可以引用存儲(chǔ)在內(nèi)存中的數(shù)據(jù),并隨時(shí)根據(jù)需要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。 使用變量時(shí)必須“先定義,后使用”變量的聲明與初始化 變量的聲明 先定義后使用 變量初始化的時(shí)機(jī) 定義時(shí)初始化變量 Datatype variablename = value; 例

4、如:int num1,num2 = 12; 定義后初始化變量 variablename = value; 例如:int num;num = 12;數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 變量名稱(chēng)變量名稱(chēng);int varName;給變量賦值,除了給一個(gè)直接的值以外,還可以通過(guò)計(jì)算獲得。變量的命名 編譯系統(tǒng)將大寫(xiě)字母和小寫(xiě)字母認(rèn)為是兩個(gè)不同的字符。 在選擇變量名和其它標(biāo)識(shí)符時(shí),應(yīng)注意做到“見(jiàn)名知意”,即選有含意的英文單詞 (或其縮寫(xiě))作標(biāo)識(shí)符。變量地址 變量的地址:變量在內(nèi)存中總占用幾個(gè)連續(xù)的字節(jié),開(kāi)始字節(jié)的地址,就是變量的地址。20072007常量與變量 常量的概念:在程序運(yùn)行中,其數(shù)值不能被改變的量; 常量的分類(lèi)

5、直接常量:在程序中直接引用的數(shù)據(jù); 符號(hào)常量:用標(biāo)識(shí)符來(lái)表示一個(gè)數(shù)據(jù); 定義形式 :#define 標(biāo)識(shí)符 常量數(shù)據(jù)符號(hào)常量與const關(guān)鍵字 符號(hào)常量#define COUNT 100提高代碼的可讀性,還可以做到一改全改 使用const關(guān)鍵字const int COUNT = 100;示例 要求用戶(hù)輸入圓的半徑(radius),經(jīng)過(guò)計(jì)算求出圓面積(area)并顯示在控制臺(tái);要求:使用#define和const兩種方式定義常量PI=3.1415926 寫(xiě)程序?qū)崿F(xiàn)游客租用游船的費(fèi)用,功能如下:要求用戶(hù)輸入押金及使用游船的總時(shí)間,游船每小時(shí)30元,計(jì)算出應(yīng)找回游客多少余額;C語(yǔ)言數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型方

6、便讓我們數(shù)據(jù)類(lèi)型方便讓我們對(duì)于不同的數(shù)據(jù)分類(lèi)對(duì)于不同的數(shù)據(jù)分類(lèi)處理處理數(shù)據(jù)類(lèi)型的關(guān)鍵字 K&R關(guān)鍵字 Int、Long、Short、Char、Float、double、unsigned、 C90關(guān)鍵字 Signed、void C99關(guān)鍵字 _Bool、_Complex、_ImaginaryInt類(lèi)型 Int類(lèi)型 Int age = 21; Int age =21,score=90; Int age,score=90; #define MAX_AGE 200 Printf(“%d”,score); 整數(shù)類(lèi)型的表示形式 十進(jìn)制:沒(méi)有前綴,09的數(shù)字組成; 12322、0、-232 八進(jìn)制:以打頭,

7、由07的數(shù)字組成; 023、0101 十六進(jìn)制:以0X或0 x打頭,由09、AF或af組成0 x12=18(十進(jìn)制)數(shù)值的顯示 使用八進(jìn)制顯示:%o、%#o 使用十六進(jìn)制顯示:%x、%#x、%#X#include int main(void)int age = 20;printf(dec = %d;octal = %o;hex = %xn,age,age,age);printf(dec = %d;octal = %#o;hex = %#xn,age,age,age);return 0;其他整數(shù)類(lèi)型 Short類(lèi)型:用于僅需小數(shù)值的場(chǎng)合以節(jié)省空間; Long類(lèi)型:用于使用大數(shù)值的場(chǎng)合 Unsig

8、ned類(lèi)型:用于只使用非負(fù)值場(chǎng)合; Unsigned int Unsigned short類(lèi)型 Unsigned long類(lèi)型 Signed :使數(shù)據(jù)的類(lèi)型更加明確; Signed int;整數(shù)類(lèi)型的選擇 使用最常用的int類(lèi)型 優(yōu)先考慮unsigned類(lèi)型 當(dāng)使用int類(lèi)型不能表示一個(gè)數(shù)而使用long類(lèi)型可以做到時(shí),使用long類(lèi)型; 在int為32位的系統(tǒng)中,如果需要16為的值,那么使用short類(lèi)型可以節(jié)省存儲(chǔ)空間;整型數(shù)據(jù)32位機(jī)類(lèi)型占用內(nèi)存字節(jié)數(shù)數(shù)的范圍int4個(gè)字節(jié)short2個(gè)字節(jié)-3276832767long4個(gè)字節(jié)unsigned4個(gè)字節(jié)unsigned short 2個(gè)字節(jié)

9、065535unsigned long 4個(gè)字節(jié)代碼示例#include int main(void)int i_number = 10;short s_number = 10;long l_number =10L;unsigned ui_number =10u;unsigned short us_number = 10U;unsigned long ul_number = 10UL;printf(int sizeof :%dn,(sizeof i_number);printf(short sizeof:%dn,(sizeof s_number);printf(long sizeof :%dn

10、,(sizeof l_number);printf(unsigned int sizeof :%dn,(sizeof ui_number);printf(unsigned short sizeof :%dn,(sizeof us_number);printf(unsigned long sizeof :%dn,(sizeof ul_number);return 0;整數(shù)溢出問(wèn)題#include #include int main(void)int max = INT_MAX;int min = INT_MIN;unsigned int umax = UINT_MAX;printf(the ma

11、x+1 is %dn,max+1);printf(the min-1 is %dn,min-1);printf(the umax +1 is %un,umax+1);return 0;注意:整數(shù)溢出程序不會(huì)報(bào)錯(cuò),所以寫(xiě)程序時(shí)一定要小心,當(dāng)達(dá)到最大值時(shí)會(huì)從新從起點(diǎn)開(kāi)始。signed和unsigned類(lèi)型 signed最重要的是修改char數(shù)據(jù)類(lèi)型 unsigned 類(lèi)型指定變量只能接受正值 unsigned int varNum; varNum = 23123; 加上unsigned前綴,正數(shù)的取值范圍是原來(lái)的兩倍 Signed與unsigned修飾符可以與 int 和 float 數(shù)據(jù)類(lèi)型一起

12、使用 unsigned int 支持的范圍是從 0 到 4,294,967,295常量與后綴后綴字母用途示例U或uUnsigned類(lèi)型123u、2345UL或lLong類(lèi)型123L、-789lll 或LLLong long類(lèi)型3LLU,3ll,3ullF或f單精度浮點(diǎn)型0.123F、3.1415f整數(shù)類(lèi)型的顯示 %u:顯示無(wú)符號(hào)整數(shù); %ld:顯示long類(lèi)型整數(shù); %h:顯示short類(lèi)型數(shù)據(jù) 符號(hào)可以結(jié)合使用: %lx、 %lo、%hd、%ho、%lu、%lld、%llu 寫(xiě)代碼示例體驗(yàn)整數(shù)類(lèi)型的顯示體驗(yàn)整數(shù)類(lèi)型的顯示#include #include int main(void)unsi

13、gned int guessNumber = UINT_MAX;short age = SHRT_MAX;long id = LONG_MAX;printf(guessNumber is %u and not %dn,guessNumber,guessNumber);printf(age is %hd and is %dn,age,age);printf(id is %ld and not %hd n,id,id);return 0;注意:每個(gè)要顯示的值都必須對(duì)應(yīng)自己的格式說(shuō)明符,并且顯示值的類(lèi)型要同說(shuō)明符相匹配;浮點(diǎn)數(shù)類(lèi)型 浮點(diǎn)數(shù)類(lèi)型分類(lèi) 單精度(float型) 雙精度(double型) 長(zhǎng)

14、雙精度型(long double) 浮點(diǎn)數(shù)的表示形式 小數(shù)形式:0.123; 指數(shù)形式:3e-3 規(guī)范化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字. 如:123.456可以表示為1.23456e2注意注意: :字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)類(lèi)型類(lèi)型與范圍32類(lèi)型位數(shù)有效位數(shù)取值范圍float32位至少6位至少double64位至少10位至少long double96位與double相同與double相同 與整型數(shù)據(jù)的存儲(chǔ)方式不同,浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的。系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分

15、采用規(guī)范化的指數(shù)形式。 浮點(diǎn)數(shù)類(lèi)型的表示1.23f F或f:表示float類(lèi)型 L或l:表示long double類(lèi)型;浮點(diǎn)數(shù)的輸出格式 輸出浮點(diǎn)數(shù)的格式 %f:輸出十進(jìn)制計(jì)數(shù)法的float和double數(shù)字; %e:輸出指數(shù)計(jì)數(shù)法的float和double數(shù)字; %Lf、%Le:輸出long double類(lèi)型的數(shù)字;代碼示例#include int main(void)float f_number = 4321.0f;double d_number = 1.234e3;long double ld_number = 1.234e-3L;printf(%f can be written %e,

16、and float sizeof :%dn,f_number,f_number,(sizeof f_number);printf(%f can be written %e ,and double sizeof :%dn,d_number,d_number,(sizeof d_number);printf(%Lf can be written %Le,and long double sizeof :%dn,ld_number,ld_number,(sizeof ld_number);return 0;整型與浮點(diǎn)型比較 整數(shù)沒(méi)有小數(shù)部分;浮點(diǎn)數(shù)可以有小數(shù)部分; 浮點(diǎn)數(shù)的表示范圍比整數(shù)大得多; 對(duì)于

17、一些算術(shù)運(yùn)算,使用浮點(diǎn)數(shù)會(huì)損失更多精度; 浮點(diǎn)數(shù)只是實(shí)際值的近似值; 浮點(diǎn)數(shù)通常比整數(shù)運(yùn)算慢;浮點(diǎn)數(shù)的上溢與下溢#include #include int main(void)float f_max =FLT_MAX*FLT_MAX ;float f_min = FLT_MIN/FLT_MAX;printf(f_max is %fn, f_max);printf(f_min is %fn,f_min);return 0;char 類(lèi)型 Char類(lèi)型 用單引號(hào)括起來(lái)的一個(gè)字符;注意只能是英文的單引號(hào) 用于存儲(chǔ)字母和標(biāo)點(diǎn)符號(hào)之類(lèi)的字符; 實(shí)質(zhì)是占一個(gè)字節(jié)的整型數(shù)(小整數(shù))A65 示例:a、m、$、

18、%、1、5 Char類(lèi)型的賦值方式 Char gender=M; Char gender= 77; %cchar 類(lèi)型(ASCII碼)值值符號(hào)符號(hào)值值符號(hào)符號(hào)值值符號(hào)符號(hào)0空字符44,9132空格45-9233!46.933447/9435#48 570 995-36$58:9637%59;97 122a z38&6012541)63?12642*64127DEL(Delete鍵)43+65 90A Z轉(zhuǎn)義字符轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線(xiàn)“”開(kāi)頭常用的轉(zhuǎn)義字符 a: 蜂鳴,響鈴 b: 回退:向后退一格 f: 換頁(yè) n: 換行,光標(biāo)到下行行首 r: 回車(chē),光標(biāo)到本行行首 t: 水平制表 v: 垂直制表 : 反斜杠 : 單引號(hào) : 雙引號(hào) ” ?: 問(wèn)號(hào) ddd: 1到3位八進(jìn)制數(shù)所代表的字符 xhh: 1到2位十六進(jìn)制數(shù)所代表的字符 0: 空字符(NULL),什么都不做 代碼示例# include int main(void)printf(How are you?n);printf(I am fine.nn);printf(How are you?t);printf(I am fine.nn);printf( How are you?n);.printf( bI am fine.nn);printf( I am fine.); printf(rHow

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論