C語言中常量變量和表達式_第1頁
C語言中常量變量和表達式_第2頁
C語言中常量變量和表達式_第3頁
C語言中常量變量和表達式_第4頁
C語言中常量變量和表達式_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二節(jié) 常量,變量和表達式數(shù)據(jù)類型常量與變量不同類型數(shù)據(jù)間的轉換運算符和表達式基本數(shù)據(jù)類型類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127無unsigned char8025

2、5說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBM PC機為例:2.2 常量與變量標識符v定義:用來標識變量、常量、函數(shù)等的字符序列v組成:l只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線l大小寫敏感l(wèi)不能使用關鍵字v長度:最長32個字符v命名原則:l見名知意l不宜混淆 如l與I, o與0例:判斷下列標識符號合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123abu一般用大寫字母u是宏定義預處理命令,不是C語句

3、l直接常量:u整型常量 u實型常量 u字符常量 u字符串常量如 #define PRICE 30常量v定義:程序運行時其值不能改變的量(即常數(shù))v分類:l符號常量:用標識符代表常量u定義格式: #define 符號常量 常量例 符號常量舉例(ch2_1.c)#define PRICE 30main() int num,total; num=10; total=num*PRICE; couttotal=”total;運行結果:total=300&整型常量(整常數(shù))v三種形式:l十進制整數(shù):由數(shù)字09和正負號表示.如 123,-456,0l八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如01

4、23,011l十六進制整數(shù):由0 x開頭,后跟09,af,AF表示. 如0 x123,0Xffv整型常量的類型l根據(jù)其值所在范圍確定其數(shù)據(jù)類型l在整常量后加字母l或L,認為它是long int 型常量&實型常量(實數(shù)或浮點數(shù))v表示形式:l十進制數(shù)形式:(必須有小數(shù)點) 如0.123, .123, 123.0, 0.0, 123.l指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 v實型常量的類型l默認double型l在實型常量后加字母f或F,認為它是float 型&字符常量v定義:用單引號括起來的

5、單個普通字符或轉義字符. v字符常量的值:該字符的ASCII碼值轉義字符及其含義:轉義字符含義nvradddtbf“xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進制數(shù)代表的字符v字符常量與字符串常量不同&字符串常量v定義:用雙引號(“”)括起來的字符序列v存儲:每個字符串尾自動加一個 0 作為字符串結束標志h e l l o 0例 字符串“hello”在內存中a a 0例 a“a”例 空串 “”0例: char ch; ch=“A”; 例: char ch; ch=A; 編譯程序根據(jù)變量定義為其分配指定字節(jié)的內存單元.地址int

6、 a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內存1-3隨機數(shù)變量v概念:其值可以改變的量v變量名與變量值v變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n;v變量初始化:定義時賦初值 例: int a,b,c; float data;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;v變量的使用:先定義,后使用例1 int student; stadent=19; /Undefined symbol statent in functio

7、n main 例2 float a,b,c; c=a%b; /Illegal use of floating point in function main v變量定義位置:一般放在函數(shù)開頭main() int a,b=2; float data; a=1; data=(a+b)*1.2; cout“data=”data;變量定義可執(zhí)行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; cout“data=”data;Ch2_005.c&整型變量v占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字vshortintlongv可用sizeof(

8、類型標識符)測量&實型變量vfloat:占4字節(jié),提供7位有效數(shù)字vdouble:占8字節(jié),提供1516位有效數(shù)字&字符型變量v字符變量存放字符ASCII碼vchar與int數(shù)據(jù)間可進行算術運算例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */沒有字符串變量,用字符數(shù)組存放Ch2_006.c例 /*ch2_003.c*/ #define PRICE 12

9、.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; cout“total=“total“,ch1=”ch1; 宏定義變量定義輸出結果運行結果:total=37.500000, ch1=d2.3不同類型數(shù)據(jù)間的轉換隱式轉換v什么情況下發(fā)生l運算轉換-不同類型數(shù)據(jù)混合運算時l賦值轉換-把一個值賦給與其類型不同的變量時l輸出轉換-輸出時轉換成指定的輸出格式l函數(shù)調用轉換-實參與形參類型不一致時轉換v運算轉換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉換成同一類型doublefloatlongunsigne

10、dintchar,short低高說明:必定的轉換運算對象類型不同時轉換例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;顯式轉換(強制轉換)v一般形式:(類型名)(表達式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 v說明:強制

11、轉換得到所需類型的中間變量,原變量類型不變 例 main() float x; int i; x=3.6; i=(int)x; cout“x=“x“,i=“i; 結果:x=3.600000,i=3精度損失問題較高類型向較低類型轉換時可能發(fā)生Ch2_007.cCh2_008.c2.4 運算符和表達式C運算符算術運算符:(+ - * / % + -)關系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節(jié)數(shù) :(sizeof)強制類型轉換:(類型)分量運算符:(

12、. -)下標運算符:()其它 :(( ) -)學習運算符應注意:v運算符功能v與運算量關系l要求運算量個數(shù)l要求運算量類型v運算符優(yōu)先級別v結合方向v結果的類型算術運算符和表達式v基本算術運算符: + - * / %l結合方向:從左向右l優(yōu)先級: - -* / % - + - (2) (3) (4)說明:l“-”可為單目運算符時,右結合性l兩整數(shù)相除,結果為整數(shù)l%要求兩側均為整型數(shù)據(jù)例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 =

13、 0 5.5%2 ()v自增、自減運算符+ -l作用:使變量值加1或減1l種類:u前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值)u后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; cout+j; j=3; coutj+; 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=4v自增、自減運算符+ -l作用:使變量值加1或減1l種類:u前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值)u后置 i+,i- (先使用i值,再執(zhí)行i

14、+1或i-1)l說明:u+ - 不能用于常量和表達式,如5+,(a+b)+u+ -結合方向: 自右向左u優(yōu)先級:- + - -* / % -+ - (2) (3) (4)例 -i+ -(i+) i=3; cout-i+; /-3 例 j+k; (j+)+k;Ch2_009.c賦值運算符和表達式v簡單賦值運算符l符號: =l格式: 變量標識符=表達式l作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量v復合賦值運算符l種類:+= -= *= /= %= = = &= = |=l含義: exp1 op= exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+

15、8)x%=3x=x%3例 a=3; d=func(); c=d+2;v說明:l結合方向:自右向左l優(yōu)先級: 14l左側必須是變量,不能是常量或表達式l賦值表達式的值與變量值相等,且可嵌套l賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;則 f=10.0例 int i; i=2.56; /結果i=2;例: 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/

16、表達式值10,a=10,b=4,c=6/表達式值5,a=5,b=10,c=2v說明:l結合方向:自右向左l優(yōu)先級: 12l左側必須是變量,不能是常量或表達式l賦值表達式的值與變量值相等,且可嵌套l賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等價于a=a+(a=a-(a*a)/a=0 等價于a=a+(a=a*(a=a-(a=a*3)逗號運算符和表達式v形式:表達式1,表達式2,表達式nv結合性:從左向右v優(yōu)先級: 15v逗號表達式的值:等于表達式n的值v用途:

17、常用于循環(huán)for語句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; couta“,”b“,”c; cout(a,b,c)“,”b“,”c; /a=15,表達式值60/a=15,表達式值20/賦值表達式,表達式值18,x=18/逗號表達式,表達式值18,x=3/1,2,3/3,2,3逗號運算符和表達式v形式:表達式1,表達式2,表達式nv結合性:從左向右v優(yōu)先級: 15v逗號表達式的值:等于表達式n的值v用途:常用于循環(huán)for語句中例:/*ch2_6.c*/#include main() int x,y=7; flo

18、at z=4; x=(y=y+6,y/z); coutx=”x;運行結果:x=3關系運算符和表達式v關系運算符l種類: = !=l結合方向:自左向右l優(yōu)先級別:=!=優(yōu)先級6(高)優(yōu)先級7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)l關系表達式的值:是邏輯值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達式值1/表達式值1/表達式值0/d=1/f=0l關系運算注意:例 若a=0; b=0.5; x=0.3; 則 a=x278在C中是允許的, 值為0例 int i=

19、1, j=7,a; a=i+(j%4!=0); 則a=2例 a0 結果為 A100 結果為10l關系運算注意:例 注意區(qū)分“=”與“=” int a=0,b=1; if(a=b) cout“a equal to b”; else cout“a not equal to b”;例 應避免對實數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結果為可改寫為:fabs(1.0/3.0*3.0-1.0)1e-60ab!a!ba&ba|b真假真假假假真真邏輯運算符和表達式v邏輯運算符l種類: ! & |l邏輯運算真值表lC語言中,運算量: 0表示“假”, 非0表示“真”, 運算結果

20、: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|abl優(yōu)先級:l結合方向:! :從右向左& :從左向右| :從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)! (2)& (11)| (12)高低l優(yōu)先級:l結合方向:! :從右向左& :從左向右| :從左向右例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d值為1值為0值為1值為1值為1值為1/(53)&2|(8(4-(!0) 值為1! (2)& (11)| (12)高低l優(yōu)先級:l結合方向:! :從右向左& :從左向右| :從左向右l短路特性:邏輯表達式求

溫馨提示

  • 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

提交評論