版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)類型(Data Type)數(shù)據(jù)為什么要區(qū)分類型?不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍占用內(nèi)存空間大小可參與的運算種類 第1頁/共56頁數(shù)據(jù)類型(Data Type)數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實型(浮點型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實型雙精度實型基本整型長整型短整型無符號整型第2頁/共56頁例2.1:一個簡單的C程序例子 #include /*函數(shù)功能:計算兩個整數(shù)相加之和 入口參數(shù):整型數(shù)據(jù)a和b 返回值: 整型數(shù)a和b之和*/int Add(int a, int b)return (a + b);/*主函數(shù)*/main()int x,
2、y, sum = 0;printf(Input two integers:);scanf(%d%d, &x, &y); /*輸入兩個整型數(shù)x和y*/sum = Add(x, y); /*調(diào)用函數(shù)Add計算x和y相加之和*/printf(sum = %dn, sum); /*輸出x和y相加之和*/第3頁/共56頁C程序常見符號分類 關(guān)鍵字(Keyword) 又稱為保留字,C語言中預先規(guī)定的具有固定含義的一些單詞 數(shù)據(jù)類型修飾符int,控制語句return等 標識符(Identifier) 系統(tǒng)預定義標識符,main,printf 等 用戶自定義標識符,Add, x, y 等 運算
3、符(Operator) 34種,詳見附錄2 分隔符(Separator) 空格、回車/換行、逗號等 其它符號 大花括號“”和“”通常用于標識函數(shù)體或者一個語句塊 “/*”和“*/”是程序注釋所需的定界符 數(shù)據(jù)(Data) 變量(Variable) 常量(Constant) 第4頁/共56頁標識符命名 變量名 函數(shù)名 由英文字母、數(shù)字和下劃線組成,大小寫敏感 不可以是數(shù)字開頭 直觀,見名知意,便于記憶和閱讀 最好使用英文單詞或其組合 切忌使用漢語拼音 下劃線和大小寫通常用來增強可讀性 variablename variable_name variableName 不允許使用關(guān)鍵字作為標識符的名字
4、 int, float, for, while, if等 某些功能的變量采用習慣命名 如:for語句所采用的循環(huán)變量習慣用i, j, k第5頁/共56頁b, B, KB, MB, GB, TB 如何衡量數(shù)據(jù)類型所占空間大??? bit,中文叫法:位 Byte,中文叫法:字節(jié) Kilobyte(KB),中文叫法: K Megabyte(MB),中文叫法:兆 Gigabyte(GB),中文叫法:G Terabyte(TB),中文叫法:T第6頁/共56頁b, B, KB, MB, GB, TB 一個位有多大? 只能是“0”或者“1”,這叫二進制 一個字節(jié)有多大? 保存一個字符(英文字母、數(shù)字、符號)
5、ASCII(美國標準信息交換碼)編碼 見P427附錄D,常用字符與ASCII碼對照表 兩個字節(jié)保存一個漢字 GB編碼 可以表示0255之間的整數(shù)第7頁/共56頁基本數(shù)據(jù)類型 int 整數(shù),在目前絕大多數(shù)機器上占4個字節(jié)。 TC2中是2個字節(jié) VC中是4個字節(jié) float 單精度浮點數(shù),一般是4個字節(jié)長 double 雙精度浮點數(shù),一般是8個字節(jié)長 char 字符,一般是1個字節(jié)長 用來表示256個ASCII字符,或者0255的整數(shù)第8頁/共56頁數(shù)據(jù)類型修飾符 short short int,短整數(shù),一般2個字節(jié)長。通常簡寫為short long long int,長整數(shù),一般是4個字節(jié)長。通
6、常簡寫為long long double,長雙精度(高精度)浮點數(shù),一般是10個字節(jié)長。 signed 用來修飾char、int、short和long,說明他們是有符號的整數(shù)(正整數(shù)、0和負整數(shù))。一般缺省都是有符號的,所以這個修飾符通常省略 unsigned 用來修飾char、int、short和long,說明他們是無符號的整數(shù)(正整數(shù)和0)第9頁/共56頁何謂類型溢出(Overflow)? C語言直接提供的任何類型都有取值范圍。當向其賦超過此范圍的數(shù)值,就會產(chǎn)生數(shù)值溢出,得到一個不正確的結(jié)果。 TC2中int的范圍是-3276832767 如果超出取值范圍,給它一個小于-32768或者大于
7、32767的數(shù)會如何呢?現(xiàn)場編程測驗第10頁/共56頁何謂類型溢出(Overflow)? 生活中的例子: 身份證號碼中的出生年 阿利亞娜號火箭發(fā)射失敗 現(xiàn)象與危害: 溢出后的數(shù)值是可預料的,但不同平臺會有所不同。當程序從高位計算機向低位計算機移植(比如從64位系統(tǒng)移植到32位系統(tǒng))時,以前從不出現(xiàn)的溢出問題可能出現(xiàn)。第11頁/共56頁類型溢出的解決方案? 解決方案: 預先估算運算結(jié)果的可能范圍,采用取值范圍更大的類型。 1+2+3+ 1!+2!+3!+ 13+23+33+ 如果不需要處理負數(shù),則采用無符號類型。 在運算還沒開始之前就判斷運算數(shù)是否在合理的取值范圍內(nèi)。如果超出,則停止運算,轉(zhuǎn)錯誤
8、處理。第12頁/共56頁使用變量要注意 不要對變量所占的內(nèi)存空間字節(jié)數(shù)想當然 用sizeof獲得變量或者數(shù)據(jù)類型的長度第13頁/共56頁sizeof到底是什么? 它是一個C語言的關(guān)鍵字,并不是函數(shù) 可以用兩種形式使用 sizeof(表達式) 一般都使用sizeof(變量名) sizeof(類型) 求出的結(jié)果為表達式值所屬類型或者類型占用的字節(jié)數(shù) 現(xiàn)場演示程序例2.3在Turbo C2.0和Visual C下的運行結(jié)果第14頁/共56頁例2.3 #include main()printf(Data type Number of bytesn);printf(- -n);printf(char %
9、dn, sizeof(char);printf(int %dn, sizeof(int);printf(short int %dn, sizeof(short);printf(long int %dn, sizeof(long);printf(float %dn, sizeof(float);printf(double %dn, sizeof(double);第15頁/共56頁為什么要用sizeofsizeof獲得類型或變量的字長? 因為 同種類型在不同的平臺其占字節(jié)數(shù)不盡相同。比如int在16位、32位和64位系統(tǒng)分別占2、4和8個字節(jié)。 現(xiàn)象與危害: 在平臺間移植時會出現(xiàn)問題,導致數(shù)據(jù)丟失
10、或者溢出。 解決方案: 用,并且只用sizeof獲得字長。第16頁/共56頁變量聲明 使用變量的基本原則 變量必須先定義,后使用 所有變量必須在第一條可執(zhí)行語句前定義 聲明的順序無關(guān)緊要 一條聲明語句可聲明若干個同類型的變量 聲明變量,是初始化變量的最好時機 不被初始化的變量,其值為危險的隨機數(shù)char esc = a;int i = 1;int sum = 0;float eps = 1.0e-5;第17頁/共56頁實型數(shù)據(jù)提供的有效數(shù)字位數(shù)例2.61234567936.0000001234567890.000000使用不當導致舍入誤差第18頁/共56頁數(shù)據(jù)在內(nèi)存中的存儲格式 整型 實型 N
11、=S2j 字符型階碼符號階碼的數(shù)值尾數(shù)符號尾數(shù)的數(shù)值階碼j尾數(shù)S第19頁/共56頁char型與int型之間的關(guān)系 例2.5:小寫字母轉(zhuǎn)換為大寫字母 b, 98B, 66b, 98B, 66第20頁/共56頁常數(shù)(Constant) 整型常數(shù) 18、-31 long int型常量 123l、123L、123456l、123456L unsigned int型常量 123u、 123U 浮點常數(shù) 十進制小數(shù)形式 123.45、456.78 指數(shù)形式 1e-2、4.5e3 float型常量 123.45f、 456.78F、1e-2f、4.5e3F long double型常量 123.45l、 4
12、56.78L、4.5e3L 缺省為double 因為字母l和數(shù)字1容易混淆,所以當用l做后綴時,常使用大寫形式第21頁/共56頁八進制與十六進制常數(shù) 以數(shù)字“0”開始的整型常數(shù)是八進制數(shù) 022、-037 010和10大小不一樣 因為八進制并不常用,所以此種表示法比較少見 以“0 x”或者“0X”開始的整型常數(shù)是十六進制 AF和af用來表示十進制的1015 十六進制的形式比較常用 0 x12、-0 x1F, -0 x1f第22頁/共56頁字符(Character)常數(shù) 字符常數(shù)的表示方法 a,A,5,%,$ 單引號內(nèi)只能有一個字符,除非用“”開頭 就是一個普通整數(shù),也可以參與各種數(shù)學運算 每個
13、字符具有一個0255之間的數(shù)值,可從ASCII表查出 注意:5和整數(shù)5的區(qū)別 字符的數(shù)學運算在密碼學內(nèi)用得比較多 用“”開頭的字符為轉(zhuǎn)義字符 例如,n,代表1個字符第23頁/共56頁字符常數(shù) 轉(zhuǎn)義字符 一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示第24頁/共56頁字符串(String)常數(shù) 用雙引號括住的由0個或多個字符組成的字符序列 I am a string 表示空字符串 轉(zhuǎn)義字符也可以在字符串中使用 引號只作為字符串開始和結(jié)束的標志 C語言內(nèi)部用0表示字符串的結(jié)束 除注釋外,是唯一可以出現(xiàn)中文的地方 x和x是不同的 里定義了一系列專門的字符串處理函數(shù)第25頁/共56頁為什么需
14、要常量? 假如不使用常量,直接使用常數(shù),會有什么影響? 程序的可讀性變差 容易發(fā)生書寫錯誤 修改麻煩 常量只能在定義時賦值,然后不能再改變其值 宏常量 const常量 枚舉常量第26頁/共56頁為什么需要常量? 要避免使用幻數(shù) 直接使用的常數(shù)叫幻數(shù)。 現(xiàn)象與危害: 當常數(shù)需要改變時,要修改所有使用它的代碼,工作量巨大,還可能有遺漏。 解決方案: 把幻數(shù)定義為宏、const常量,或者枚舉常量。 建議使用后兩者。#define ARRAY_SIZE 10const int ARRAY_SIZE = 10;enum ARRAY_SIZE = 10;第27頁/共56頁宏常量 宏常量 也稱符號常量 一般
15、采用全大寫字母表示 #define 標識符 字符串 不是語句,而是一種編譯預處理命令 宏替換(Macro Substitulition) 第28頁/共56頁例2.2 :計算圓的周長和面積 area = 88.247263circumference = 33.300854第29頁/共56頁例2.2 :計算圓的周長和面積 第30頁/共56頁const常量 用const修飾定義的變量為常量 const float pi = 3.1425926; const常量與宏常量相比的優(yōu)點是什么? const常量有數(shù)據(jù)類型 某些集成化調(diào)試工具可以對const常量進行調(diào)試第31頁/共56頁枚舉(Enumerati
16、on)常量 一個被遺忘的角色 從程序來窺其一斑 enum weeks SUN, MON, TUE, WED, THU, FRI, SAT; enum weeks today; enum response no, yes, none; enum response answer; today = TUE; answer = yes; if (answer = yes) printf(Today is Tuesday.n); else printf(Today is NOT Tuesday.n);第32頁/共56頁算術(shù)運算符 +,-,*,/ 加、減、乘、除運算 四則混合運算中,先算乘除,后算加減,按
17、從左向右的順序計算,左結(jié)合 % 求余運算常用的標準數(shù)學函數(shù)函數(shù)名函數(shù)名功功 能能函數(shù)名函數(shù)名功功 能能sqrt(x)計算計算x的平方根,的平方根,x應大于等于應大于等于0 exp(x)計算計算ex的值的值fabs(x)計算計算x的絕對值的絕對值pow(x,y)計算計算xy的值的值log(x)計算計算lnx的值的值sin(x)計算計算sinx的值,的值,x為弧度值為弧度值log10(x)計算計算lgx的值的值cos(x)計算計算cosx的值,的值,x為弧度值為弧度值第33頁/共56頁關(guān)系運算符 ,=, b & b c);a大于b,并且b大于c 或運算| a | b只要兩者中有一個為真,結(jié)
18、果就為真 ( a b | b c); a大于b,或者b大于c 求反! ( !a );如果a是0,結(jié)果非0;如果a是非0,結(jié)果是0 并不改變a的值第35頁/共56頁實例 ch是英文大寫字母 (ch = A) & (ch double float long int short chardoublefloatlongunsignedintchar,short精度低精度高第37頁/共56頁自動類型轉(zhuǎn)換 在進行賦值操作時,會發(fā)生類型轉(zhuǎn)換 將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的 反之是不安全的 如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事 但是,浮點數(shù)轉(zhuǎn)為整數(shù),會丟失小數(shù)部分,非四舍
19、五入 反之,轉(zhuǎn)換后的結(jié)果必然是錯誤的,具體結(jié)果與機器和實現(xiàn)方式有關(guān)。避免如此使用,好的編譯器會發(fā)出警告第38頁/共56頁類型強轉(zhuǎn)(Casting) 消除從大到小的警告 l = (long)i; 可以通過“(類型)表達式”的方式把表達式的值轉(zhuǎn)為任意類型 強轉(zhuǎn)時,你必須知道你在做什么 強轉(zhuǎn)與指針,并稱C語言兩大神器,用好了可以呼風喚雨,用壞了就損兵折將第39頁/共56頁例2.7 m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5第40頁/共56頁增一和減一運算符 n+,n-,+n,-n +讓參與運算的變量加1,-讓參與運算的變量減1 作
20、為后綴運算符時,先取n的值,然后加/減1 作為前綴運算符時,先加/減1,然后取n的值第41頁/共56頁增一和減一運算符 n+,n-,+n,-n +讓參與運算的變量加1,-讓參與運算的變量減1 作為后綴運算符時,先取n的值,然后加/減1 作為前綴運算符時,先加/減1,然后取n的值第42頁/共56頁增一和減一運算符 良好的程序設計風格提倡:在一行語句中,一個變量只能出現(xiàn)一次加1或者減1運算 過多的加1和減1運算混合,不僅可讀性差,而且因為編譯器實現(xiàn)的方法不同,導致不同編譯器產(chǎn)生不同的運行結(jié)果第43頁/共56頁位操作運算符 & 按位與運算 | 按位或運算 按位異或運算 按位右移運算 按位求反第44頁/共56頁位操作運算符 現(xiàn)場演示P66,3.4(2)邏輯運算與位運算的不同main() int x=12, y=8; printf(n%5d%5d%5d, !x, x|y, x&y); printf(n%5d%5d%5d, x, x|y, x&y); printf(n%5u%5d%5dn, x, x|y, x&y); 0 1 1 -13 12 865532 12 8第
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《神經(jīng)系統(tǒng)的療養(yǎng)》課件
- 單位管理制度匯編大合集人力資源管理十篇
- 《證據(jù)法的基礎(chǔ)知識》課件
- 《診斷學》課程標準
- 2024服務員個人工作計劃(30篇)
- 八下期中測試卷01【測試范圍:第1-11課】(解析版)
- 路基作業(yè)指導書
- 2024年農(nóng)業(yè)招商引資工作總結(jié)(修正稿)
- 《客艙服務概述》課件
- 學習培訓心得體會
- 《工業(yè)數(shù)據(jù)采集技術(shù)》課程標準
- 智慧農(nóng)業(yè)的無人機與遙感技術(shù)
- 河北省石家莊市2023-2024學年高一上學期期末教學質(zhì)量檢測生物試題(含答案解析)
- 循證護理在骨科中的護理
- 心肺復蘇應急演練腳本
- 華南理工大學2022年622物理化學考研真題(含答案)
- 建筑垃圾安全生產(chǎn)管理制度范本
- 酒店總經(jīng)理應聘計劃書
- 22G101三維立體彩色圖集
- 2023年CQE客訴工程師年度總結(jié)及下年規(guī)劃
- 人教版地理七年級上冊期末測試題(4套含答案)
評論
0/150
提交評論