版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 數(shù)據(jù)類型、運算符與表達式,數(shù)據(jù)類型 常量與變量 不同類型數(shù)據(jù)間的轉換 算術運算符和算術表達式 賦值運算符和賦值表達式 逗號運算符和逗號表達式,2.1 數(shù)據(jù)類型,指針類型,空類型void,定義類型typedef,數(shù)據(jù)類型決定: 1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù) 2. 數(shù)據(jù)取值范圍 3. 其上可進行的操作,基本數(shù)據(jù)類型,整型,字符型,實型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBM PC機為例,2.2 常量與變量,標識符 定義:用來標識變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關鍵字,討論:判斷下列
2、標識符號合法性 sumSumM.D.JohndayDate3days student_name#33lotus_1_2_3charab above $123 _toDay,M.D.John,3days,#33,char,$123,ab,長度:Turbo C中最長32個字符 命名原則: 見名知意,采用簡潔有含義的英文單詞(或縮寫) 不宜混淆 如l與I, o與0,標識符命名實例 stu_name, sum, total, day, count, sort,常量 在程序運行過程中,其值不能改變的量稱為常量 常量可為任意數(shù)據(jù)類型 字面常量(直接常量) 整型: 12、0、-3 實型: 4.6、-1.23
3、 字符型:a、d 字符串常量:”Hello”、”Good Morning!”,符號常量:標識符代表常量 定義格式: #define ,符號常量定義舉例 #define PI 3.1415926 #define STAR *,說明:符號常量一般使用大寫英文字母表示,以區(qū)別一般用于小寫字母表示的變量。,符號常量使用,例 符號常量舉例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,運行結果:total=300,符號常量的使用能給程序員帶來哪些好處?,變量 其值可以改變的
4、量稱為變量 變量也可以為任意數(shù)據(jù)類型 變量定義的一般格式 數(shù)據(jù)類型 變量1,變量2,變量n;,決定分配字節(jié)數(shù) 和數(shù)的表示范圍,變量定義舉例: int a,b,c; float data;,變量的使用:作強制定義,也就是“先定義,后使用”,例1 int student; stadent=19; /Undefined symbol stadent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,整型數(shù)據(jù) 整型常量,問題: 0123 = ( )10 0 x123 = ( )
5、10 0Xff = ( )10,整型常量的類型 根據(jù)其值所在范圍確定其數(shù)據(jù)類型 在整常量后加字母l或L,認為它是long int 型常量,例 12 與 12L,例 30000 為int型 65536 為long int型,整型變量 整型變量在內(nèi)存中以二進制的形式存放 根據(jù)占用的字節(jié)數(shù)不同,分為不同類別,整型變量的定義,整型變量定義舉例: int a,b; unsigned short c,d; long e, f;,例: main() int a,b,c,d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(“a+u = %d, b+u
6、= %dn”,c, d); ,運行結果:a+u = 22, b+u = -14,實型數(shù)據(jù) 實型常量 表示形式: 十進制數(shù)形式:(必須有小數(shù)點) 指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù)) 實型常量的整數(shù)部分為時可以省略,且E或e后面指數(shù)必須為整數(shù)。,十進制數(shù)形式實型常量 0.123, .123, 123.0, 0.0, 123.,指數(shù)形式實型常量 12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , .e3,實型數(shù)據(jù) 實型常量 規(guī)范化的指數(shù)形式: 即在字母e(或)之前的數(shù)據(jù)部分中,小數(shù)點左邊有 且僅有一位非零的數(shù)字。,指數(shù)形式實型常量 12.3e3 ,123
7、E2, 1.23e4 , 0.123e-3,實型常量的類型 實型常量部分float和double型,一個實型常量可以賦給一個float型或double型變量。根據(jù)變量的類型截取實型常量中相應的有效數(shù)字。,實型變量 float: 占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字,字符常量 定義:用單引號括起來的單個普通字符或轉義字符。 字符常量的值:該字符的ASCII碼值 轉義字符:反斜線后面跟一個字符或一個代碼值表示,如 a A ? n 101,如 A65, a97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -
8、(),例: A-101-x41-65,例 轉義字符舉例(ch2_001.c,ch2_004.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); ,運行結果:(屏幕顯示) A B C Isay:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,運行結果: 屏幕顯示:= 打印機輸出:,注意事項: 單撇號中的字符不能是或者 一個字符占一個字節(jié),存其對應的ASCII碼 思考:9和9的區(qū)別 字符型數(shù)
9、據(jù)可像證書一樣在程序中參與相關的運算,a 32 結果為65,字符變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進行算術運算,例1 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,例2 main() char c1, c2; c1=97; c2=98; printf(“%c %d”, c1, c2); ,/*ch2_003.c*/ #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A
10、+a; printf(“total=%f,ch1=%cn”,total,ch1); ,運行結果: total=37.500000, ch1=d,例子,字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結束標志 字符常量與字符串常量不同,例: char ch; ch=“A”;,沒有字符串變量,用字符數(shù)組存放,變量賦初值,如果定義了變量,但是沒有對它賦初值,則它的值是一個不確定的數(shù)值,例 main() int x,y; printf(“%d,%d”,x,y); ,運行結果:64,3129,2.3 不同類型數(shù)據(jù)間的轉換,隱式轉換 什么情況下發(fā)生 運算轉換
11、-不同類型數(shù)據(jù)混合運算時 賦值轉換-把一個值賦給與其類型不同的變量時 輸出轉換-輸出時轉換成指定的輸出格式 函數(shù)調(diào)用轉換-實參與形參類型不一致時轉換,a 32,int age; age = 11.1,char name=a; printf(“%dn”,name);,運算轉換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉換成同一類型,char ch; int i; float f; double d;,ch/i + f*d - (f+i),例1,顯示轉換 可以利用強制類型轉換將一個表達式轉換成所需類型 一般形式:(類型名)(表達式) 例: (int)(x+y) (int)x+y (double)(3/2) (
12、int)3.6 說明:強制轉換得到所需類型的中間變量,原變量類型不變,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結果:x=3.600000,i=3,精度損失問題,2.4 算術運算符和算術表達式,C運算符簡介,學習運算符應注意 運算符功能 與運算量關系 要求運算量個數(shù) 要求運算量類型 運算符優(yōu)先級別 結合方向 結果的類型,基本的算術運算符 +加法運算或正值運算符 -減法運算或負值運算符 *乘法運算符 /除法運算符,求商,兩個整數(shù)相除結果為整數(shù) %模運算符,求余,要求兩則均為整型數(shù)據(jù),3+5、+3,5-2、
13、-3,3*5,5/3,7%4,例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 5%-2 = 1%10 = 5%1 = 5.5%2,2,-2.5,1,-1,1,0,(),1,取模的余數(shù)符號由分子(被除數(shù)決定),算術表達式和運算符的優(yōu)先級和結合性 算術表達式:用算術運算符和括號將運算對象連接起來的、符合C語法規(guī)則的式子。 求表達式的值: 先按運算符的優(yōu)先級別高低次序執(zhí)行; 再一個運算對象兩則的運算賦的優(yōu)先級別相同,則按規(guī)定的“結合方向”處理。,a*b/c-1.5+a,a b * c / d,自增+、自減運算符 作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i
14、-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,注意說明: 只能用于變量,不能用于常量或表達式; 結合方向“自右向左”; 優(yōu)先級別: - - + - - * / % - + - 自增(減)運算常用于循環(huán)語句中循環(huán)變量自動加(減)1或指針變量,使指針指向下一個地址,5+ () (
15、a+b)+ () i+ (),例1解答: -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例1: -i+ i=3; printf(“%d”,-i+);,有關表達式使用中的問題說明 表達式中包含多個自加、自減運算時,很容易出錯,i+j,應如何結合? 調(diào)用函數(shù)時,實參數(shù)地求值順序,c并無統(tǒng)一規(guī)定,2.5 賦值運算符和賦值表達式,簡單賦值運算符“” 作用:將一個數(shù)據(jù)賦給一個變量,常量或表達式,只能是變量,不能是常量或表達式,例 3=x-2*y; a+b=3;,例 a3; a(a+b)*c,賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型,例1 float f;
16、int i; i=10; f=i; 則 f=10.0,例2 int i; i=2.56; /結果i=2;,結合方向:自右向左 優(yōu)先級: 14,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,復合的賦值運算符 += -= *= /= %= = = a+=a-=a*a,/a=-264 等價于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+
17、=a*=a-=a*=3;,/a=0 等價于a=a+(a=a*(a=a-(a=a*3),2.6 逗號運算符和逗號表達式,形式:表達式1,表達式2,表達式n 結合性:從左向右 優(yōu)先級: 15 逗號表達式的值:等于表達式n的值,例1 a=3*5,a*4 a=3*5,a*4,a+5 例2 x=(a=3,6*3) x=a=3,6*a 例3 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); 例4 printf(“%d,%d,%d”,a,b,c) ; printf(“%d,%d,%d”,(a,b,c),b,c),/a
18、=15,表達式值60,/a=15,表達式值20,/賦值表達式,表達式值18,x=18,/逗號表達式,表達式值18,x=3,/1,2,3,/3,2,3,/其中逗號起分隔作用,/其中逗號為逗號運算符,例: #include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); ,運行結果:x=3,2.7 關系運算符和關系表達式,關系運算符 種類: = = != 結合方向:自左向右 優(yōu)先級別:低于算術運算符而高于賦值運算符,例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc),關系表達式的值:是邏輯量“真”或“假”,分別用1和0表示。,例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表達式值1,/表達式值1,/表達式值0,/d=1,/f=0,C中沒有邏輯型,例1 若a=0; b=0.5; x=0.3; 則 a=x=b的值為,0,例2 5278在C中是允許的, 值為,0,例3 int i=1, j=7,a; a=i+(j%4!=0); 則a=,2,例4 a0 結果為 A100 結果為,1,0,例6 注意區(qū)分“=”
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026恒風聚能新能源(甘肅)有限公司招聘考試參考題庫及答案解析
- 2026年甘肅電投常樂發(fā)電有限責任公司招聘30人考試備考題庫及答案解析
- 2026年怒江州福貢縣公安局輔警招聘(9人)考試備考試題及答案解析
- 2026重慶醫(yī)科大學附屬第一醫(yī)院工作人員招聘考試備考題庫及答案解析
- 2026年1月重慶市萬州區(qū)高峰街道辦事處公益性崗位招聘4人考試參考試題及答案解析
- 2026年廣東水利電力職業(yè)技術學院高職單招職業(yè)適應性測試備考試題有答案解析
- 胺碘酮的患者生活質(zhì)量改善
- 2026浙江紹興市本級衛(wèi)生健康單位第一次招聘碩士博士研究生、高級專家和醫(yī)學類工作人員80人考試參考試題及答案解析
- 2026年西湖區(qū)轉塘街道編外用工招聘備考題庫參考答案詳解
- 2026年韶關市大寶山資源綜合利用有限公司招聘備考題庫含答案詳解
- 新人抖音直播獎勵制度規(guī)范
- 《漁業(yè)法》2025修訂解讀:新制度亮點及職責條例強化
- 【小學】【期末】家長會:孩子在學校的底氣【課件】
- 2025年煤礦井下電鉗工作業(yè)理論全國考試題庫(含答案)
- 鋼結構防腐涂裝工藝方案
- 云上(貴州)數(shù)據(jù)開發(fā)有限公司招聘筆試題庫2026
- 2025廣東深圳市公安局第十三批招聘警務輔助人員2356人(公共基礎知識)綜合能力測試題附答案解析
- 清洗吸污合同范本
- 信息系統(tǒng)安全設計方案
- 書法美育課件
- 2025-2026學年統(tǒng)編版三年級語文上冊全冊及各單元知識點歸納
評論
0/150
提交評論