c語言數據類型運算符表達式.ppt
《c語言數據類型運算符表達式.ppt》由會員分享,可在線閱讀,更多相關《c語言數據類型運算符表達式.ppt(41頁珍藏版)》請在裝配圖網上搜索。
1,第三章數據類型、運算符與表達式,數據類型概念…常量與變量…三種常用基本數據類型…算術運算與賦值運算…逗號運算…混合運算與數據類型轉換…,2,C語言的基本元素,1.符號集(字符集),大寫字母、小寫字母、阿位伯數字、下劃線、標點符號和運算符,2.標識符(區(qū)分大小寫)P39,用來標識常量、變量、函數及文件名字的字符系列,標識符的構成規(guī)則:(不能使用關鍵字),以字母(大小寫均可)或以下劃線開頭隨后可跟若干個(包括0個)字母、數字、下劃數標識符的長度各個系統不同,最好不要超過8個字符,例:判斷下列標識符號合法性sumSUMM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123,M.D.John,3days,#33,char,a>b,$123,區(qū)分大小寫,3,3.關鍵字(P365),也稱保留字,它是C語言中具有特定含義,專門用做語言特定成分的標識符。,main,int,char,float,struct,注意:,所有關鍵字都有固定的意義,不能用作其它所有關鍵字都必須小寫,如else和ELSE是代表不同的意義,4,數據類型決定:1.數據占內存字節(jié)數2.數據取值范圍3.其上可進行的操作,C的數據類型,5,整型,字符型,實型,有,無,6,一般用大寫字母是宏定義預處理命令,不是C語句直接常量:整型常量實型常量字符常量字符串常量,如#definePRICE30,常量P37定義:程序運行時其值不能改變的量(即常數)分類:符號常量:用標識符代表常量定義格式:#define符號常量常量,例符號常量舉例(ch2_1.c)#include#definePRICE30voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);},運行結果:total=300,使用符號常量的好處:1)含義清楚2)一改全改,7,整型常量(整常數)P40三種形式:十進制整數:由數字0-9和正負號表示.如123,-456,0八進制整數:由數字0開頭,后跟數字0-7表示.如0123,011十六進制整數:由0 x開頭,后跟0-9,a-f,A-F表示.如0 x123,0Xff,問題:0123=()100 x123=()100Xff=()10,8,整型數據在內存中的存放形式:P41數據在內存中以二進制的補碼表示。整型數據是占2個字節(jié),16位。,如:inti=10,j=-10;(10)10=(1010)2,一個正整數的補碼和原碼相同。,一個負整數的補碼是該數絕對值的二進制按位取反再加1。,符號位,9,10,整型變量的定義,C程序中用到的所有變量都必須在程序中定義,即:強制類型定義如:inta,b指定變量a,b為整型unsignedshortc,d指定變量c,d為無符號短整型longe,f指定變量e,f為長整型,11,#includevoidmain(){inta,b,c,d;unsignedu;a=12;b=24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);},12,整型數據的溢出,#include,13,實型常量(實數或浮點數)P45表示形式:十進制數形式:(必須有小數點)如0.123,.123,123.0,0.0,123.指數形式:(e或E之前必須有數字;指數必須為整數)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,e3,e0.3,實型常量的類型默認double型在實型常量后加字母f或F,認為它是float型,e-5,1.2E-3.5,e3,e0.3,14,字符常量P48定義:用單引號括起來的單個普通字符或轉義字符.,字符常量的值:該字符的ASCII碼值,如‘\101’-----------‘A’‘\102’-----------’B’‘\376’-----------’?’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(?),例:‘A’-------’\101’-------’\x41’--------65,如‘A’——65,‘a’——97,‘0’——48,‘\n’——10,如‘a’‘A’‘?’‘\n’‘\101’,轉義字符:反斜線后面跟一個字符或一個代碼值表示,例轉義字符舉例#includevoidmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\C\");},運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’,例#includevoidmain(){printf(“Y\b=\n”);},運行結果:屏幕顯示:=,15,字符常量與字符串常量不同,字符串常量P52定義:用雙引號(“”)括起來的字符序列存儲:每個字符串尾自動加一個‘\0’作為字符串結束標志,例:charch;ch=“A”;,16,變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:數據類型變量1,變量2,…,變量n;,變量初始化:定義時賦初值,例:inta,b,c;floatdata;,決定分配字節(jié)數和數的表示范圍,合法標識符,例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;,變量的使用:先定義,后使用,變量定義位置:一般放在函數開頭,17,例如:inta=3;,1、變量代表計算機內存中的某一存儲空間,該存儲空間中存放的數據就是變量的值。,2、在同一程序塊中,每個變量都有唯一的名字,不能被重復定義。,3、使用變量時必須“先定義,后使用”。,18,整型變量P41占字節(jié)數隨機器不同而不同,short≤int≤long,實型變量float:占4字節(jié),提供7位有效數字double:占8字節(jié),提供15-16位有效數字,字符型變量字符變量存放字符ASCII碼一個字符變量在內存中占一個字節(jié)。char與int數據間可進行算術運算,例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/,例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/,沒有字符串變量,用字符數組存放,例3.2#includevoidmain(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d”,c,d);},例3.3#includevoidmain(){inta,b;a=32767;b=a+1;printf(“a=%d,b=%d”,a,b);},19,例3.63.7#includevoidmain(){inti;charc1,c2,c3,c4;c1=b;c3=97;i=a;c2=i-32;c4=c1-34;printf("%c,%c,%c,%c,%c\n",c1,c2,c3,c4,i);printf("%d,%d,%d,%d,%d\n",c1,c2,c3,c4,i);},字符形式輸出時,首先將ASCⅡ碼轉換成相應字符。整數形式輸出時,直接將ASCⅡ碼作為整數輸出。,運行結果:b,A,a,@,a98,65,97,64,97,4.字符數據可以以字符形式輸出,也可以用整數形式輸出。,1.將一個字符常量存放到一個字符變量中,是將該字符的相應的ASCⅡ碼存放在存儲單元中。,2.字符數據與整型數據可以相互賦值。,3.允許對字符數據進行算術運算,此時就是對它們的ASCⅡ碼值進行算術運算。,20,#include#definePRICE12.5voidmain(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;printf(“total=%f,ch1=%c\n”,total,ch1);},運行結果:total=37.500000,ch1=d,21,,作業(yè):3.63.73.8,22,運算符和表達式概述,23,學習運算符應注意:運算符功能與運算量關系要求運算量個數要求運算量類型運算符優(yōu)先級別結合方向結果的類型,24,算術運算符和表達式基本算術運算符:+-*/%(模運算符)結合方向:從左向右優(yōu)先級:----->*/%----->+-(2)(3)(4)說明:“-”可為單目運算符時,右結合性兩整數相除,結果為整數%要求兩側均為整型數據,例5/2=-5/2.0=,例5%2=-5%2=1%-10=5%1=5.5%2,2-2.5,1-110(?),符號由被除數決定,25,算術運算符舉例例:設:inta=5,b=2;floatc=5.0,d=2.0;求a/b、a%b、c/d、a+a%b/b、a%d,解:a/b=2、a%b=1、c/d=2.5、a+a%b/b=5、a%d非法,設:inta=5,b=3,c=1,d=2,e=6,求a+b-c/d+e%d,解:a+b-c/d+e%d=5+3-0+0=8,26,自增、自減運算符++--作用:使變量值加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,27,自增、自減運算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1),說明:++--不能用于常量和表達式,如5++,(a+b)++++--結合方向:自右向左優(yōu)先級:++--------->*/%----->+-(2)(3)(4),例-i++?-(i++)i=3;printf(“%d”,-i++);//-3,例-i++i=3;printf(“%d”,-i++);,28,例自增自減運算#includevoidmain(){inti=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);printf("%d\n",i);},運行結果:9889-8-98,29,賦值運算符和表達式簡單賦值運算符符號:=格式:變量標識符=表達式作用:將一個數據(常量或表達式)賦給一個變量,,賦值表達式的值與變量值相等,且可嵌套,例floatf;inti;i=10;f=i;則f=10.0,例inti;i=2.56;//結果i=2;,例:a=b=c=5a=(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,賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型,30,說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式,復合賦值運算符種類:+=-=*=/=%=《=》=P64a+=a-=a*a,例:inta=2;a%=4-1;a+=a*=a=a*=3;,例:3=x-2*y;a+b=3;,272,31,①將實型數據(包括單、雙精度)賦給整型變量時,舍棄實型的小數部分。,②將整型數據賦給單、雙精度變量時,數值不變,但以浮點數形式存儲到變量中。,#includevoidmain(){inti;floatf;i=6.32;f=45;printf("%d%f\n",i,f);},運行結果:645.000000,賦值結果與類型轉換P60,32,#includevoidmain(){unsigneda;intb=-1;a=b;printf("%d->%u\n",b,a);a=4294967294u;b=a;printf("%d->%u\n",b,a);},③長度相同的有符號與無符號整型數間,原樣賦值(但數值有時會有變化)。,運行結果:-1->4294967295,,0,,0,補碼?反碼?原碼,11……10?10……001?10……010,-2->4294967294,33,④char、int、long等類型的轉換,★“短”數據賦給“長”變量符號擴展:若最高位為1(負數),則變量高字節(jié)為補1;分之,補0。,#includevoidmain(){charc;inti;c=43;i=c;printf("i=%d\n",i);c=\376;i=c;printf("i=%d\n",i);},43號字符‘+’‘\53’,00101011,,254號字符‘■’‘\376’,11111110,,運行結果:i=43i=-2,34,④char、int、long等類型的轉換,★“長”數據賦給“短”變量只將數據的低字節(jié)位原封不動送到變量中(數據有可能有差錯),#includevoidmain(){shortinti;longL=6324232L;i=L;printf("i=%d,L=%d\n",i,L);},運行結果:i=-32760,L=6324232,L=6324232,i=-32760,,35,逗號運算符和表達式P65形式:表達式1,表達式2,……表達式n結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中,例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,//a=15,表達式值60,//a=15,表達式值20,//賦值表達式,表達式值18,x=18,//逗號表達式,表達式值18,x=3,//1,2,3,//3,2,3,36,,例:#includevoidmain(){intx,y=7;intz=4;x=(y=y+6,y/z);printf("x=%d\n",x);},運行結果:x=3,例:#includevoidmain(){inta=1;printf(“結果=%d\n”,(a=3*a,3*a));},運行結果:結果=9,37,不同類型數據間的轉換P54隱式轉換(自動類型轉換)什么情況下發(fā)生運算轉換------不同類型數據混合運算時賦值轉換------把一個值賦給與其類型不同的變量時輸出轉換------輸出時轉換成指定的輸出格式函數調用轉換------實參與形參類型不一致時轉換運算轉換規(guī)則:不同類型數據運算時先自動轉換成同一類型,38,1.float型數據在運算時一律先轉換成double型;2.不同類型進行混合運算時,按照類型級別由低到高的順序轉換.,39,顯式轉換(強制轉換)P56一般形式:(類型名)(表達式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變,例3.8#includevoidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3,精度損失問題,40,,作業(yè):3.93.103.12上機題:3.7,41,第三章結束,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 語言 數據類型 運算 表達式
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.3dchina-expo.com/p-11495357.html