數(shù)據(jù)類型運算符與表達式.ppt_第1頁
數(shù)據(jù)類型運算符與表達式.ppt_第2頁
數(shù)據(jù)類型運算符與表達式.ppt_第3頁
數(shù)據(jù)類型運算符與表達式.ppt_第4頁
數(shù)據(jù)類型運算符與表達式.ppt_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章 數(shù)據(jù)類型、運算符與表達式,數(shù)據(jù)類型 常量與變量 整型數(shù)據(jù) 實型數(shù)據(jù) 字符型數(shù)據(jù),變量賦初值 各類數(shù)值型數(shù)據(jù)間的混合運算 算術運算符和算術表達式 賦值運算符和賦值表達式 逗號運算符和逗號表達式,回顧,程序是為執(zhí)行一項任務而編寫的有序指令集 算法是解決問題的具體方法和步驟 流程圖是算法的圖形化表現(xiàn)形式 C語言的特點 C程序的編譯和運行過程 編譯器將源程序轉換成機器能理解的程序 連接器用于連接相關的目標文件以生成可執(zhí)行程序,目標,理解變量和常量的含義 熟悉基本數(shù)據(jù)類型 - int、char、float 和 double 使用算術運算符 理解類型轉換 熟練掌握自增和自減運算 熟練掌握復合賦值表達式,3.1 C的數(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機為例,3.2 常量與變量,標識符 定義:用來標識變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關鍵字,討論:判斷下列標識符號合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab 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 字符型: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,符號常量的使用能給程序員帶來哪些好處?,變量 其值可以改變的量稱為變量 變量也可以為任意數(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ù)存儲在內(nèi)存中,方便后面使用這個數(shù)據(jù)或者修改這個數(shù)據(jù)的值。,通常使用變量來存儲數(shù)據(jù)。使用變量可以引用存儲在內(nèi)存中的數(shù)據(jù),并隨時根據(jù)需要顯示數(shù)據(jù)或執(zhí)行數(shù)據(jù)操縱。,存儲 Rate,Rate * 5%,將值存儲為DiscAmt,Rate-DiscAmt,10,0.5,將值存儲為Result,9.5,聲明和使用變量,聲明變量: Datatype variablename; 定義時初始化變量: Datatype variablename = value; 定義后初始化變量: variablename = value;,給變量賦值,除了給一個直接的值以外,還可以通過計算獲得。,變量命名,在 C 語言中,變量命名需要遵循一定的規(guī)則,有效名稱,principal,cost_price,marks_3,lastname,city,無效名稱,123rate,currency$,discount%,zip code,變量的命名規(guī)則: 變量名可以由字母、數(shù)字和 _(下劃線)組合而成 變量名不能包含除 _ 以外的任何特殊字符,如:%、# 、逗號、空格等 變量名必須以字母或 _(下劃線)開頭 變量名不能包含空白字符(換行符、空格和制表符稱為空白字符) C 語言中的某些詞(例如 int 和 float 等)稱為保留字,具有特殊意義,不能用作變量名 C 語言區(qū)分大小寫,因此變量 price 與變量 PRICE 是兩個不同的變量,整型數(shù)據(jù) 整型常量,問題: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10,3.3 整型數(shù)據(jù),返回,整型常量的類型 根據(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 = %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,3.4 實型數(shù)據(jù),返回,實型數(shù)據(jù) 實型常量 規(guī)范化的指數(shù)形式: 即在字母e(或)之前的數(shù)據(jù)部分中,小數(shù)點左邊有 且僅有一位非零的數(shù)字。,指數(shù)形式實型常量 12.3e3 ,123E2, 1.23e4 , 0.123e-3,實型常量的類型 實型常量部分float和double型,一個實型常量可以賦給一個float型或double型變量。根據(jù)變量的類型截取實型常量中相應的有效數(shù)字。,實型變量 float: 占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字,基本數(shù)據(jù)類型,數(shù)據(jù)屬于不同類別,Africa,The quick brown fox,TRUE,數(shù)據(jù),非數(shù)值,數(shù)值,整型,非整型,9002.12,999,9/12/2003,2.175,123,Jackie Chan,char,數(shù)據(jù)類型,非數(shù)值,數(shù)值,整型,int,short int,long int,double,float,非整型,3.5 字符型數(shù)據(jù),字符常量 字符變量 字符串常量,返回,字符常量 定義:用單引號括起來的單個普通字符或轉義字符。 字符常量的值:該字符的ASCII碼值 轉義字符:反斜線后面跟一個字符或一個代碼值表示,如 a A ? n 101,如 A65, a97, 048 , n10,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: 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”); ,運行結果: 屏幕顯示:= 打印機輸出:,America Standard Code for Information Interchange,注意事項: 單撇號中的字符不能是或者 一個字符占一個字節(jié),存其對應的ASCII碼 思考:9和9的區(qū)別 字符型數(shù)據(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+a; printf(“total=%f,ch1=%cn”,total,ch1); ,運行結果: total=37.500000, ch1=d,例子,字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結束標志 字符常量與字符串常量不同,例: char ch; ch=“A”;,沒有字符串變量,用字符數(shù)組存放,如果定義了變量,但是沒有對它賦初值,則它的值是一個不確定的數(shù)值,3.6 變量賦初值,返回,例 main() int x,y; printf(“%d,%d”,x,y); ,運行結果:64,3129,3.7 各類數(shù)值型數(shù)據(jù)間的混合運算,隱式轉換 什么情況下發(fā)生 運算轉換-不同類型數(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),例,顯示轉換 可以利用強制類型轉換將一個表達式轉換成所需類型 一般形式:(類型名)(表達式) 例: (int)(x+y) (int)x+y (double)(3/2) (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,3.8 算術運算符和算術表達式,C運算符簡介,學習運算符應注意 運算符功能 與運算量關系 要求運算量個數(shù) 要求運算量類型 運算符優(yōu)先級別 結合方向 結果的類型,返回,基本的算術運算符 + 加法運算或正值運算符 - 減法運算或負值運算符 * 乘法運算符 / 除法運算符,求商,兩個整數(shù)相除結果為整數(shù) % 模運算符,求余,要求兩則均為整型數(shù)據(jù),3+5、+3,5-2、-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-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+ () (a+b)+ () i+ (),例1: -i+ i=3; printf(“%d”,-i+);,例1解答: -i+ -(i+) i=3; printf(“%d”,-i+); /-3,有關表達式使用中的問題說明 表達式中包含多個自加、自減運算時,很容易出錯,i+j,應如何結合? 調(diào)用函數(shù)時,實參數(shù)地求值順序,c并無統(tǒng)一規(guī)定,3.9 賦值運算符和賦值表達式,簡單賦值運算符“” 作用:將一個數(shù)據(jù)賦給一個變量,常量或表達式,只能是變量,不能是常量或表達式,例 3=x-2*y; a+b=3;,例 a3; a(a+b)*c,返回,賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型,例1 float f; 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=12; a+=a-=a*a,/a=-264 等價于a=a+(a=a-(a*a),例: int a=2; a%=4-1; a+=a*=a-=a*=3;,/a=0 等價于a=a+(a=a*(a=a-(a

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論