wxm第3章數(shù)據(jù)類型.ppt_第1頁
wxm第3章數(shù)據(jù)類型.ppt_第2頁
wxm第3章數(shù)據(jù)類型.ppt_第3頁
wxm第3章數(shù)據(jù)類型.ppt_第4頁
wxm第3章數(shù)據(jù)類型.ppt_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章 數(shù)據(jù)類型與運算符 標識符的概念 最基本的數(shù)據(jù)類型 運算符,語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。 例: 變量名 sum _total lotus_1_2 M.D.John ¥12 3D ab void int C保留字(也叫關鍵字)不能當標識符用,參見教材 P39,標識符的命名規(guī)則,注意: 必須避開C語言的關鍵字(保留字 見書P365) C編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。例:int a,A; 在選擇變量名和其它標識符時,應注意做到“見名知意”。 例:student_name, StudentName , StdName 為了程序的可移植性,標識符的長度最好不要超過8個字符。 習慣上,符號常量名全用大寫。(變量可用大小寫混寫),好的編程習慣 (抄筆記),第三章 標識符的概念 最基本的數(shù)據(jù)類型 運算符,構造類型,指針類型,空類型 void,參見教材 P37,輔助記憶: int:integer char:character struct: structure enum:enumerate,3.1 C的數(shù)據(jù)類型,3.2.1 常量和符號常量 在程序運行過程中,其值不能被改變的量稱為常量。,整形常量: 2 -10 浮點型常量: 2.31 -3.0 .4 字符常量: 2 a 字符串常量: ”ab” ”這是我” ”-0.02” 符號常量: #define PI 3.1415926 /*宏定義*/,3.2 數(shù)據(jù)常量與變量,常量分類,C語言中,整型常量可用不同進制表示: 1)十進制: int x= 83,y= -26; 2)八進制:數(shù)字以0開頭 int a=0123 ; =1*82+2*81+3*80 =83 3)十六進制:數(shù)字以0x開頭 int a= -0x1A; = -(1*161+10*160)= -26,例: 符號常量的定義與使用 #define PRICE 30/*宏定義*/ #include void main ( ) int num; num=10 * PRICE; printf(num=%dn ,num); ,運行結果: num=300,注意:不能給符號常量賦值 PRICE=40;/* 語法錯誤*/,回顧:內存的概念 是RAM,掉電則數(shù)據(jù)消失 以字節(jié)為單位,1個字節(jié)8位 每個字節(jié)一個編號(地址),語法格式: 數(shù)據(jù)類型 變量名;,整數(shù)型 int a, b=0x100; long x=7 , y, z=011; 實數(shù)型 float h; double s67.4; 字符型 char a1 m , a2;,技巧: 欲知變量所占內存空間的字節(jié)個數(shù),則 printf( “%d“, sizeof(float) ); 或者 printf( “%d“, sizeof( h ) );,共六種 ,有符號整型 有符號短整型 有符號長整型 無符號整型 無符號短整型 無符號長整型,(signed) int (signed) short (int ) (signed) long (int) unsigned int unsigned short (int) unsigned long (int),注意:1.括號表示其中的內容是可缺省的。 例: long x; unsigned long y; 2. VC下變量占用的內存字節(jié)數(shù):改教材 P43,3.3 整型變量, 區(qū)別: 有符號整形變量的最高位是“符號位”,且負數(shù)是補碼形式的。 無符號整形沒有“符號位”,只能表示正整數(shù)和0。 例: int x; unsigned int x;,思考: unsigned int型能存放的最大的整數(shù)是? int型變量能存放的最大的整數(shù)是?,232-1,231-1,unsigned int k = 0xFFFFFFFF;,11110111 11011001 11111110 10111111,*了解:有符號整型變量 在內存中是以二進制補碼形式存放的。,*二進制補碼形式 正數(shù)的補碼:就是自身 int a=10; 00000000 00000000 00000000 00001010,負數(shù)的補碼:該數(shù)絕對值的二進制,按位取反加1 int a=-10; 00000000 00000000 00000000 00001010 取反 11111111 11111111 11111111 11110101 加1 11111111 11111111 11111111 11110110,*使用補碼的好處: 1) 使 0 有了單一的存儲形式 2) 使減法變成了加法例:8-10 8的補碼 + 10的補碼,#include void main() int a; a= -100000*100000; printf(“%d n“, a ); ,01111111 11111111 11111111 11111111 =231-1,int a; (VC時,分配4字節(jié)空間)能表示的最大整數(shù)為:,常見邏輯錯誤: 數(shù)據(jù)溢出(overflow),*思考:int型變量能表示的最小的整數(shù)為:,10000000 00000000 00000000 00000000 = -231,C語言中,浮點型常量的表示方法,小數(shù)形式 指數(shù)形式,0.012 或 .12 1.2e-2 或 1.2E-2,注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)。,double a=1.8E-3, b=-12e0, c=.1e-3; double x=e3,z=3E,k=2e0.8 , y=3e(-2);,3.4 浮點型數(shù)據(jù),計算機中 小數(shù)存儲方式,定點型:小數(shù)點的位置事先已有約定,不再改變。,浮點型:小數(shù)點在邏輯上是不固定的。,浮點數(shù)優(yōu)點:同樣大小的空間,可以存放遠比定點數(shù)取值范圍大得多的數(shù)。 缺點:運算規(guī)則比定點數(shù)復雜的多,運算過程慢。,VC環(huán)境下:float類型變量占 4個字節(jié): -3.4e38 +3.4e38 double類型變量占8個字節(jié): -1.7e308 +1.7e308,雙精度浮點數(shù)的優(yōu)點: 1)比單精度浮點數(shù) 能存儲更大的數(shù)或更小的數(shù)。 2)精度高 單精度浮點數(shù)的優(yōu)點: 所需內存少,運算速度快于double類型 。 (這對大型應用程序中非常重要!) 舉例分析: 例1) 家庭記賬軟件(注意:消費支出金額形如 “35.45元” ) 例2) 全球人口數(shù)字統(tǒng)計(注意:unsigned long變量最大值僅為42億 ),*僅了解:浮點型數(shù)據(jù)計算后有可能產生舍入誤差,運算后,float:十進制結果的前67位有效數(shù)字是準確的 double:十進制結果的前1516位有效數(shù)字是準確的, 注意:C語言中,將浮點型常量都默認為雙精度型的常量。 例:float k; k=1.3; warning C4305: = : truncation from const double to float ,3.5 字符型數(shù)據(jù),注意:一個字符變量 只能存放一個字符。 例: char c1, c2 =b; c2=c1; c1=apple;,error : too many characters in constant,warning : local variable c1 used without having been initialized,*思考: char a=3; char a=3;,char c1=a , c2=A; 等價為 c1=97 65,0 1 1 0 0 0 0 1,0 0 1 1 0 1 1 1,00000011,00110011,參見p364 ASCII碼表,American Standard Code for Information Interchange,字符變量在內存中如何存儲?,書eg3.6:寫出運行結果,#include void main() char c1,c2,c3; c1=97; /*等價為c1=a; */ c2=98; c3=1; printf(“%c %c %cn“,c1,c2,c3); printf(“%d %d %dn“,c1,c2,c3); ,a b 97 98 1,書eg3.7:大小寫字母之間的變換關系,#include void main() char c1,c2; c1=a; c2=b; printf(“%c %cn“,c1,c2); c1=c1-32; c2=c2-32; printf(“%c %cn“,c1,c2); ,a b A B, 常見題型 必須掌握, 記憶:小寫字母的ASCII碼 - 32 =大寫字母的ASCII碼,printf(“班級t姓名t學號t成績n”); printf(“一班t張全t022229t83.5n“); printf(“十二班t王方新t116t95n“); printf(“ 01, 016 “); printf(“, “ “);,轉義字符: 見書48頁 (僅要求掌握以下幾種 ), 不能敲鍵盤輸入的字符,在程序中寫 八進制ASCII值, t為制表符,強制顯示在下一字段(屏幕上8個字符位為1個字段), 因為 “ 在字符串中具有特殊意義,所以要想作為普通字符輸出,需要再添加一個轉義標志。,第三章 標識符的概念 最基本的數(shù)據(jù)類型 運算符,參見p365, (加法運算符,或正值運算符,如:、 ) (減法運算符,或負值運算符,如:-.0、 -) * (乘法運算符) (除法運算符 (模運算符,或稱求余運算符,兩側均應為整型數(shù)據(jù)。 例如: 的值為, 84的值為0)。,3.8 算術運算符和算術表達式,何謂表達式: 例如: *max(x,y) 概念辨析: 賦值表達式:a=10 賦值語句:a=10;,i+ 與 +i的區(qū)別: 前綴: 是i先自增一后,再使用的值; 后綴: 是先使用的值后,再自增一。 例如:已知i=3 ; 等價為:i=i+1;j=i; (所以i=,j=4) ; 等價為:j=i;i=i+1; (所以i=4,j=3), 自增運算符+ + , 自減運算符- -,學生練習:寫出運行結果 #include void main() int num=0; printf(“num=%dn“,num+); printf(“num=%dt“, +num); ,運行結果 num0 num2, 常見題型 掌握分析方法,注意: 自增、自減運算符只能用于變量,而不能用于常量或表達式。因為計算結果無處可存 錯誤: +5 , +(x+y),優(yōu)點:執(zhí)行速度快 用途: 1、自增(減)運算符常用于循環(huán)語句中,使循環(huán)變量自動加。 2、也常用于指針變量,使指針指向下一個地址。,好的編程習慣:(抄筆記) 為了清晰運算的先后順序,建議多用()。 例如:不要寫成i+j的形式,而應寫成 (i+)+j, 自動轉換規(guī)則(見教材P54) 級別高 doublefloat 級別低 intchar,3.7 各類數(shù)據(jù)類型的混合運算,不同類型的數(shù)據(jù)做運算時,系統(tǒng)會自動轉換成精度最高類型,然后進行運算。,例:10+ B + 65.1 * 3,思考:怎樣得到1.66666這個值? ,=1,必須改為 5.0/3 或 5/3.0,強制類型轉換運算符:將一個表達式轉換成所需類型。 格式: (類型名)表達式 (float)(5%3) (int)(3.9+4.9) (int)3.9+4.9, 小結:共有兩種類型轉換 1)運算時不必用戶指定,系統(tǒng)自動進行的類型轉換,如3+6.5。 2)當自動類型轉換不能實現(xiàn)目的時,程序員強制要求進行某種類型轉換,如 b= (int)a % 3 ; float k= (float)1.3 ;,表達式的值為: 2.0000,表達式的值為: 8 (規(guī)則:8.8小數(shù)甩掉),表達式的值為: 7.9000,編程經(jīng)驗:如何四舍五入?(int)( x +0.5) / 先加0.5,賦值表達式: 變量= 表達式 最常見的語法問題: 符號常量=55; /錯,常量在運行中不能改變值!,3.9 賦值運算符和賦值表達式,int a=b=c=5; /錯,應改為:int a=5,b=5,c=5; 或者改為:int a,b,c; a=b=c=5 ;,printf(“%d”,a=b+4); /語法正確,但可讀性差,*高精度數(shù)被賦給低精度變量,會舍棄什么? 例:float f=1.6f; int i; i=f;/系統(tǒng)自動舍棄實數(shù)的小數(shù)部分,且會語法警告 *長字節(jié)整數(shù)被賦給短字節(jié)整數(shù)變量,會舍棄什么? 例:int a=300;char c; c=a; /系統(tǒng)自動舍棄高位(c被賦值為44) 注意:這些都有可能引發(fā)邏輯錯誤。 所以需了解一下.( *各種情況總結在書P6062),復合的賦值運算符,+=,-=,*=,/=,%=, =,&=,=,|=,作用:能提高編譯效率(逆波蘭式 )。 不建議初學者使用,但要求能讀懂。,凡是二元(二目)運算符,都可以與賦值符一起組合成復合賦值符。,*3.10 逗號運算符和逗號表達式,逗號運算符:,格式: 表達式,表達式,,逗號結合方向為自左向右,所以先求解表達式,再求解表達式,。 整個逗號表達式的值,是最后一個表達式的值。,例1: *5,* 該逗號表達式的值為60。,#include int main( ) int add1, add2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論