數(shù)據(jù)類型、運算符、表達式課件_第1頁
數(shù)據(jù)類型、運算符、表達式課件_第2頁
數(shù)據(jù)類型、運算符、表達式課件_第3頁
數(shù)據(jù)類型、運算符、表達式課件_第4頁
數(shù)據(jù)類型、運算符、表達式課件_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)類型、運算符、表達式第三章數(shù)據(jù)類型、運算符、表達式數(shù)據(jù)類型、運算符、表達式數(shù)據(jù)類型分類數(shù)據(jù)類型基本類型整型實型字符型枚舉類型雙精度單精度構(gòu)造類型指針類型空類型數(shù)組類型共同體類型結(jié)構(gòu)體類型數(shù)據(jù)類型、運算符、表達式常量n常量: 在程序運行過程中,其值不能被改變的量。 n習慣上,符號常量名用大寫,變量用小寫,以示區(qū)別數(shù)據(jù)類型、運算符、表達式n符號常量:符號常量: 代表常量的標識符(符號)n符號常量符號常量在程序開頭定義,并且在程序中不可以改變值。n只可以在定義處修改,并且所有要替代處都做出相應(yīng)的修改。n習慣上符號常量用大寫字符。數(shù)據(jù)類型、運算符、表達式例:求園面積#define PI 3.14m

2、ain() float r,s; r=2; s=PI*r*r; printf(s=%f,s);EXP0301.C數(shù)據(jù)類型、運算符、表達式變量n變量變量:在程序運行過程中,其值可以被改變的量。n變量變量在內(nèi)存內(nèi)存中占據(jù)一定的存儲單元。n變量類型變量類型決定存儲單元的大小大小。n變量名變量名表示存儲單元的值(該值在程序運行過程中可能隨時變化)。數(shù)據(jù)類型、運算符、表達式i變量名存儲單元變量值int i;i=9;? 9數(shù)據(jù)類型、運算符、表達式int a,b,c;a=123;b=456;c=a+b;abc123456579數(shù)據(jù)類型、運算符、表達式標識符n變量用標識符表示,即變量的名字。n標識符的要求:n

3、以字母字母、數(shù)字數(shù)字、下劃線下劃線組成n且第一個字符第一個字符必須為字母字母或下劃線下劃線n一般長度取8個字符(建議,不同系統(tǒng))n關(guān)鍵字不能作為標示符關(guān)鍵字不能作為標示符數(shù)據(jù)類型、運算符、表達式合法&不合法標識符nsum $123 intnclass day #33nmonth 3D64 student_namenmain _above abnlotus_1_23 basic M.D.Jhon,nint_a average _123數(shù)據(jù)類型、運算符、表達式合法&不合法標識符nsum $123 intnclass day #33nmonth 3D64 student_namenm

4、ain _above abnlotus_1_23 basic M.D.Jhonnint_a average _123數(shù)據(jù)類型、運算符、表達式n對所有要使用的變量必須定義,每一變量屬于一個類型。nint a;nfloat a;數(shù)據(jù)類型、運算符、表達式n大寫字母和小寫字母被認為是兩個不同的字符。nint sum,SUM;n習慣上,變量變量名用小寫小寫字母表示n符號常量符號常量習慣上用大寫大寫字母標識。數(shù)據(jù)類型、運算符、表達式n程序設(shè)計中變量的命名:n必須必須滿足C語言的語法規(guī)定。n應(yīng)該應(yīng)該“見其名,知其意”,容易理解,方便閱讀程序。nint sum;nfloat average,area;數(shù)據(jù)類型

5、、運算符、表達式一定要先定義、后使用!n編譯程序不能翻譯不能翻譯未定義變量。 沒有開辟空間,把數(shù)據(jù)放到哪里去?n編譯程序在編譯時根據(jù)變量類型變量類型確定存儲單元的數(shù)量。 不同類型的變量占據(jù)的內(nèi)存單元內(nèi)存單元大小不同。數(shù)據(jù)類型、運算符、表達式n編譯程序在編譯時要根據(jù)變量類型進行語法檢查語法檢查。n例,整型變量整型變量a、b可以進行“求余”運算a%bn若把a、b定義為實型變量實型變量,則上述運算非法。數(shù)據(jù)類型、運算符、表達式常量類型與變量類型比較n常量:整型、實型、字符型、字符串型n變量:整型、實型、字符型n沒有沒有字符串型變量字符串型變量,字符串由字符型數(shù)組來存放!數(shù)據(jù)類型、運算符、表達式整型數(shù)

6、據(jù)n整型常量:n10進制數(shù)n8進制數(shù)(以0開頭、0-7)n16進制數(shù)(以0 x開頭、0-f)數(shù)據(jù)類型、運算符、表達式表達方式意義十進制數(shù)值123十進制1230123八進制830 x123十六進制291能夠進行各類數(shù)據(jù)的轉(zhuǎn)換能夠進行各類數(shù)據(jù)的轉(zhuǎn)換(含含2進制進制)數(shù)據(jù)類型、運算符、表達式數(shù)制轉(zhuǎn)換2進制到10進制n0123452n12481632n678910112n6412825651210242048n1213141516172n40968192163843276865536131072數(shù)據(jù)類型、運算符、表達式20+24+26+27+29+212+214=1+16+64+128+512+409

7、6+16384=21201151413121110 9 8 7 6 5 4 3 2 1 00 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1數(shù)據(jù)類型、運算符、表達式10進制轉(zhuǎn)換為2進制(20484096)3 7 6 12 0 4 8-211(10242048)1 7 1 31 0 2 4-210(5121024)6 8 95 1 2-29(128256)1 7 71 2 8-27(3264)4 93 2-25(1632)1 71 6-24(12)11-20(0)0151413121110 9 8 7 6 5 4 3 2 1 00 0 0 0 1 1 1 0 1 0 1 1 0 0

8、0 1數(shù)據(jù)類型、運算符、表達式2進制轉(zhuǎn)換為8進制1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 062735101537260 0數(shù)據(jù)類型、運算符、表達式2進制轉(zhuǎn)換為16進制1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 06D7D0 xD7D6數(shù)據(jù)類型、運算符、表達式8進制轉(zhuǎn)換為2進制1 0 1 0 1 1 1 1 1 0 1 0 1 1 0627351015372610 0數(shù)據(jù)類型、運算符、表達式16進制轉(zhuǎn)換為2進制1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 06D7D0 xD7D6數(shù)據(jù)類型、運算符、表達式8進制轉(zhuǎn)換為10進制01232 1 01 2

9、 3n3*80+2*81+1*82=n3*1+2*8+1*64=n83數(shù)據(jù)類型、運算符、表達式10進制轉(zhuǎn)換為8進制(64512)8 36 4-828-81(864)1 9(864)1 18-81(08)33-3*8102 1 01 2 30123數(shù)據(jù)類型、運算符、表達式n10進制轉(zhuǎn)換成8進制也可以先轉(zhuǎn)換成2進制,再轉(zhuǎn)換成8進制n10進制與16進制的轉(zhuǎn)換與8進制類似n16進制與8進制之間的轉(zhuǎn)換略數(shù)據(jù)類型、運算符、表達式整型變量分類有符號無符號(有符號)基本整型 int(有符號)短整型 short(有符號)長整型 long無符號基本整型 unsigned int無符號長整型 unsigned lo

10、ng無符號短整型 unsigned short整型變量數(shù)據(jù)類型、運算符、表達式整型變量在內(nèi)存的存儲形式n整型變量在內(nèi)存中是以二進制數(shù)二進制數(shù)形式存在的n不同類型的整型變量分別占據(jù)2或4個字節(jié)。n數(shù)制以補碼補碼形式表示(正數(shù)負數(shù)都是)數(shù)據(jù)類型、運算符、表達式n正數(shù)補碼就是其本身n負數(shù)補碼:絕對值二進制按位求反加1得到n第一位第一位為符號位(有符號時有符號時)n0表示正數(shù)正數(shù)、1表示負數(shù)負數(shù)數(shù)據(jù)類型、運算符、表達式int a=9;0 0 0000000 0 010010a字節(jié)1字節(jié)2int b=-9;b字節(jié)1字節(jié)21 1 1111011 1 1111111 1 1011011 1 111111按位

11、求反+11 1 1111011 1 111111-9的補碼int a=-9;內(nèi)存中如何存儲?數(shù)據(jù)類型、運算符、表達式整型變量分類及參數(shù)變量類型字節(jié)/比特數(shù) 取值范圍signed Int2/16-3276832767 -215 (215-1)Unsigned int2/16 065535 0(216-1)signed Short int2/16-3276832767 -215 (215-1)Unsigned short int2/16 065535 0(216-1)signed Long int4/32 -231(231-1)Unsigned long int4/32 0(232-1)數(shù)據(jù)類型、

12、運算符、表達式基本整型能表示的范圍?nunsigned int a;na能表示多少的范圍?n2字節(jié)16位二進制數(shù)n最大1111111111111111n最小00000n0到65535(216-1)數(shù)據(jù)類型、運算符、表達式基本整型能表示的范圍?nint a;na能表示多少的范圍?n最高位表示符號n最大0111111111111111n32767(215-1)n最小10000n?數(shù)據(jù)類型、運算符、表達式int a; a的值是多少?1 1 1010111 1 111111-11 1 1100111 1 111111按位求反按位求反0 0 0011000 0 0000006添負號添負號-6求負數(shù)補碼求

13、負數(shù)補碼 負數(shù)絕對值(添負號) 按位求反 +1負數(shù)補碼轉(zhuǎn)換成十進制負數(shù)補碼轉(zhuǎn)換成十進制(上面的(上面的逆過程逆過程)?數(shù)據(jù)類型、運算符、表達式int a; a的值是多少?0 0 0000001 0 000000-11 1 1111110 1 111111按位求反按位求反0 0 0000001 0 00000032768添負號添負號-32768數(shù)據(jù)類型、運算符、表達式基本整型能表示的范圍?nint a;na能表示多少的范圍?n最高位表示符號n最大0111111111111111n32767(215-1)n最小10000n?-32768數(shù)據(jù)類型、運算符、表達式整型變量的定義nint a,b;nun

14、signed short c,d;nlong e,f;nunsigned g;n要在函數(shù)的開頭部分定義(聲明)要在函數(shù)的開頭部分定義(聲明)變量變量。數(shù)據(jù)類型、運算符、表達式整型常量的類型n1、整型常量的值在-32768+32767范圍內(nèi),編譯器認為是int類型。n2、整型常量的值超過上述范圍,而在 -214748648+214748647范圍內(nèi),編譯器認為是long類型。數(shù)據(jù)類型、運算符、表達式n3、在整型常量的值后面家字母L(l),則告訴編譯器,把該整數(shù)常量作為long類型處理。n例:123L、0Ln常量沒有unsigned類型。數(shù)據(jù)類型、運算符、表達式實型數(shù)據(jù)n實型常量n實數(shù)(real)

15、又稱為浮點數(shù)(float),表達方式:n小數(shù)表示: 0.123 、 .123 、 123.0 、 123. 、 0.0(必須有小數(shù)點必須有小數(shù)點)n指數(shù)表示: 123e3 或 123E3 、123E-2數(shù)據(jù)類型、運算符、表達式實型數(shù)據(jù)內(nèi)存存儲方式3141591+符號+小數(shù)部分.314159指數(shù)101x3.14159數(shù)據(jù)類型、運算符、表達式實型變量類型及參數(shù)變量類型字節(jié)/比特數(shù) 有效數(shù)字取值范圍float4/3267-3.4x10-383.4x1038double8/641516-1.7x10-3081.7x10308long double16/1281819-1.2x10-49321.2x10

16、4932數(shù)據(jù)類型、運算符、表達式實型變量的定義nfloat x,y; n/* 指定x、y為單精度實型變量 */ndouble z;n/* 指定z為雙精度實型變量 */數(shù)據(jù)類型、運算符、表達式n實型常量不分float型和double型。n一個實型常量可以賦給一個float型或double型變量。n根據(jù)變量的類型截取實型常量中相應(yīng)的有效位數(shù)字。數(shù)據(jù)類型、運算符、表達式nfloat a; double b;na=12345.6789; b=12345.6789;n單精度a只能接收7位n雙精度b能接收9位數(shù)據(jù)類型、運算符、表達式n作業(yè):nP65n3.3 (計算各種數(shù)制,除二進制外不算補碼)n3.4 (

17、除了char型)數(shù)據(jù)類型、運算符、表達式字符型數(shù)據(jù)n字符常量: 單引號單引號括起來的一個字符n如:a、x、D、?、$。n注意:a和A是不同的字符常量。(區(qū)分大小寫)數(shù)據(jù)類型、運算符、表達式如何表示字符 n n開頭的字符序列字符序列稱為轉(zhuǎn)義序列轉(zhuǎn)義序列n使其后字符變?yōu)榱硗獾囊饬x另外的意義數(shù)據(jù)類型、運算符、表達式轉(zhuǎn)義字符n nn tn bn rn 換行n 橫向跳格n 退格n 回車數(shù)據(jù)類型、運算符、表達式如何表示 & & n n n 有沒有另外一種方法實現(xiàn)?數(shù)據(jù)類型、運算符、表達式輸出是什么樣的?n例:nmain() printf(abctderftgn); a b c d e制表區(qū)

18、1制表區(qū)2fg數(shù)據(jù)類型、運算符、表達式字符變量n字符變量用來存放字符常量n定義形式及賦值: char c1,c2; c1=d; c2=a;字符常量用單引號單引號括起來數(shù)據(jù)類型、運算符、表達式字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法n一個字符變量在內(nèi)存中占一個一個字節(jié)n將一個字符常量放到一個字符變量中n是把該字符的ASCII碼放到存儲單元中n例,a的ASCII碼為97數(shù)據(jù)類型、運算符、表達式n字符以ASCII碼存儲,其存儲方式與整數(shù)類似。nC語言允許字符和整數(shù)之間進行運算。n字符型變量字符型變量和整型變量整型變量某些情況可互用nP374 附錄I (常用字符與常用字符與ACSII代碼表代碼表)數(shù)據(jù)類

19、型、運算符、表達式輸出如何?main()char a,b; a=A; b=65; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b);EXP0302.Ca: A 65b: A 65數(shù)據(jù)類型、運算符、表達式輸出如何?main()int a,b; a=A; b=65; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b);EXP0303.Ca: A 65b: A 65數(shù)據(jù)類型、運算符、表達式輸出如何?main()int a; char b; a=A+15; b=D+32; printf(a: %c %dn,a,a); pri

20、ntf(b: %c %dn,b,b);EXP0304.Ca: P 80b: d 100數(shù)據(jù)類型、運算符、表達式如何輸出 & & main()char a,b,c; a=39; b= ; c=92; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b); printf(c: %c %dn,c,c);EXP0305.Ca: 39b: 34b: 92數(shù)據(jù)類型、運算符、表達式輸出如何?main()char c1,c2,c3,c4,c5,c6; c1=65; c2=32; c3=97; c4=10; c5=48; c6=1; printf(%c%c%c

21、%c%c%c, c1,c2,c3,c4,c5,c6);EXP0306.CAa0 數(shù)據(jù)類型、運算符、表達式輸出如何?main() printf(101x20141x0a060 x01); printf(nn);EXP0307.CAa0 數(shù)據(jù)類型、運算符、表達式字符串常量n字符常量:單引號單引號括起來的一個字符。n字符串常量:雙引號雙引號括起來的字符序列nHow do you do. nCHINAn$123.45 na ( a ? )數(shù)據(jù)類型、運算符、表達式字符串常量在內(nèi)存中的存放n字符串常字符串常量在內(nèi)存中的存放:n每一個每一個字符均以其ASCII碼存放n最后添加一個空字符空字符 即0n字符串常

22、量CHINA存放在內(nèi)存中的情況是:C H I N A0數(shù)據(jù)類型、運算符、表達式n注意:字符變量字符變量中只能存放一個字符,不能存放字符串!nchar c; c = a; /* 字符a */ c = a; /* 字符串a(chǎn)*/a 0a數(shù)據(jù)類型、運算符、表達式變量賦初值n在定義變量的同時指定其初值n例: int a = 3; float f = 3.56; char c = a; int a, b, c = 5; 數(shù)據(jù)類型、運算符、表達式n注意:多個變量指定相同的初值時n定義a,b,c三個整型變量均賦初值為3: int a = 3, b = 3, c = 3; int a = b = c = 3;

23、n可是在付值時允許: int a,b,c; a=b=c=3; 數(shù)據(jù)類型、運算符、表達式各類數(shù)值型數(shù)據(jù)間的混合運算n整型、實型(包括單、雙精度)、字符型數(shù)據(jù)可以混合運算。n例:10 + a + 1.5 - 8765.1234 * bn混合運算時,先轉(zhuǎn)換成同一種類型,然后進行運算。數(shù)據(jù)類型、運算符、表達式轉(zhuǎn)換規(guī)則數(shù)據(jù)類型、運算符、表達式n例:10+a+i*f-d/en(int i; float f; double d; long e;)數(shù)據(jù)類型、運算符、表達式C運算符簡介n1算術(shù)運算符 (+ - * / 等)n2關(guān)系運算符 ( = = !=)n3邏輯運算符 (! |)n4位運算符 ( &

24、| )n5賦值運算符 (= 等)n6條件運算符 (? :)n7逗號運算符 (,)數(shù)據(jù)類型、運算符、表達式n8 指針運算符 (*、&)n9 求字節(jié)數(shù)運算符 (sizeof)n10強制類型轉(zhuǎn)換運算符 (類型)n11分量運算符 ( )n12下標運算符 ( )n13其它 (函數(shù)調(diào)用運算符()數(shù)據(jù)類型、運算符、表達式算術(shù)運算符、算術(shù)表達式n基本運算符:+ - * / %n運算方法與數(shù)學運算基本一致n* / % 運算優(yōu)先級一樣,從左向有右計算。數(shù)據(jù)類型、運算符、表達式n3*5n15n3/5n0n兩個兩個整型變量整型變量,運算后結(jié)果為,運算后結(jié)果為整型變量整型變量數(shù)據(jù)類型、運算符、表達式n17/10

25、/3n0n17%10%3n1n17/10%3n1n17%10/3n2數(shù)據(jù)類型、運算符、表達式強制類型轉(zhuǎn)換運算符n運算符兩側(cè)的數(shù)據(jù)類型不同時,先自動自動進行類型轉(zhuǎn)換,再運算。但是程序員可以強制強制進行某種轉(zhuǎn)換。n強制類型轉(zhuǎn)換的一般形式是:n(類型名)(表達式)(類型名)(表達式)數(shù)據(jù)類型、運算符、表達式n(double)a; /* 將a的值轉(zhuǎn)換為double類型 */n(int)(x+y); /* 將x+y的值轉(zhuǎn)換為int類型 */n(float)(5%3); /* 將5%3的值轉(zhuǎn)換為float類型 */數(shù)據(jù)類型、運算符、表達式n(int)(x+y);n(int)x+y;n(int)(x);n(

26、int)x;nint(x); n說明:強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型不發(fā)原來變量的類型不發(fā)生變化生變化。表達式僅為一個一個變量時,括號可以省略。數(shù)據(jù)類型、運算符、表達式n17/10/3n(float)17/10/3n(float)(17/10)/3n0n0.567n0.333數(shù)據(jù)類型、運算符、表達式自增、自減運算符n自增:使變量的值加1 n自減:使變量的值減1n+i; /* 在使用i之前前使i加1 */n-i; /* 在使用i之前前使i減1 */ni+; /* 在使用i之后后使i加1 */ni-; /* 在使用i之后后使i減1 */數(shù)據(jù)類型、運算符、表達式ni =

27、3;j=+i; /*先使i加1,再賦給j,執(zhí)行后j=4, i=4*/ni = 3;j=i+; /*先把i賦給j,再使i加1,執(zhí)行后j=3,i=4*/ni=3;nprintf(“%d”,+i);printf(“%d”,i+);數(shù)據(jù)類型、運算符、表達式n注意:n+和-只能用于變量變量,不能用于常量和表達式。n5+; n(a+b)+; n#define ONE 1; ONE+; 數(shù)據(jù)類型、運算符、表達式n+和-的結(jié)合方向為“右結(jié)合”。ni=3; nprintf(“%d”,-i+);n-i+(負值運算符-和自增運算符優(yōu)先級相同)n-(i+)n(-i)+ n輸出是 3 n輸出后i值為4數(shù)據(jù)類型、運算符、

28、表達式有關(guān)表達式使用中的問題n表達式中使用+或-易錯ni = 3;k = (i+) + (i+) + (i+)ni+先使用i,再加1執(zhí)行后:k = 3 + 3 + 3 = 9 、i = 6nk = (+i) + (+i) + (+i)n+i先加1 ,并且執(zhí)行了3次,再使用i,執(zhí)行后:k = 6 + 6 + 6 = 18 、i = 6數(shù)據(jù)類型、運算符、表達式n出現(xiàn)多個運算符時,編譯器在處理時盡可能多的(從左到右)將若干個字符組合成一個運算符ni+j; (i+)+j i+(+j) 數(shù)據(jù)類型、運算符、表達式ni = 3;nprintf(%d,%d,i,i+);nTurbo C中,調(diào)用函數(shù)時,實際參數(shù)的處理順序是從右到左。n先右:i+,先使用i(3),再使i加1。n后左: i (現(xiàn)在值為4)n因此,輸出結(jié)果:4,3數(shù)據(jù)類型、運算符、表達式n對于初學者來說,要盡可

溫馨提示

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

評論

0/150

提交評論