C語言程序設(shè)計課件----第3章_第1頁
C語言程序設(shè)計課件----第3章_第2頁
C語言程序設(shè)計課件----第3章_第3頁
C語言程序設(shè)計課件----第3章_第4頁
C語言程序設(shè)計課件----第3章_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章第三章 數(shù)據(jù)類型、運算符與表達式數(shù)據(jù)類型、運算符與表達式 基本數(shù)據(jù)類型基本數(shù)據(jù)類型: 整整 型型: int, long ,short 字字 符符 型型: char 單精度型:單精度型: float, 雙精度型:雙精度型: double 基本的運算符:基本的運算符: 算術(shù)運算符算術(shù)運算符: +、-、*、/、+、- - 賦值運算符:賦值運算符:= 逗號運算符逗號運算符 :,3.1 C的數(shù)據(jù)類型的數(shù)據(jù)類型 數(shù)據(jù)類型是任何數(shù)據(jù)類型是任何語言的基礎(chǔ)語言的基礎(chǔ)基本數(shù)據(jù)類型定義關(guān)鍵字基本數(shù)據(jù)類型定義關(guān)鍵字: 整整 型型: int 字字 符符 型型: char 單精度浮點型單精度浮點型: float 雙

2、精度浮點型雙精度浮點型: double基本數(shù)據(jù)類型修飾符基本數(shù)據(jù)類型修飾符: signed (有符號的有符號的) unsigned (無符號的無符號的) long (長的長的) short (短的短的)3.2 常量與變量常量與變量3.2.1 常量常量(Constant)與符號常量與符號常量 常量常量: 在程序運行過程中,其值不能被改變的量。在程序運行過程中,其值不能被改變的量。 符號常量符號常量:用一個標識符代表一個常量的。用一個標識符代表一個常量的。 符號常量通常用符號常量通常用大寫字母大寫字母表示。表示。 字符常量:字符常量: 用單引號引起來的單個字符。注:用單引號引起來的單個字符。注:a

3、 A不同不同 例例3.1#define PRICE 30 main() int num, total; num = 10; total = num * PRICE; printf(total = %d, total); #define語句定義一個符號常量語句定義一個符號常量PRICE,其值等于,其值等于30。該值在程。該值在程序運行過程中不能被改變。序運行過程中不能被改變。符號常量通常用大寫字母表示。符號常量通常用大寫字母表示。編譯程序在翻譯本源程序文件時編譯程序在翻譯本源程序文件時,符號常量,符號常量PRICE用其值用其值30替換替換。程序運行結(jié)果是程序運行結(jié)果是:total = 3003.

4、2.2 變量(變量(Variable) 變量變量:在程序運行過程中,其值可以被改變的量。在程序運行過程中,其值可以被改變的量。 變量用標識符表示變量用標識符表示,以以字母字母、數(shù)字數(shù)字、下劃線下劃線 組成,且組成,且第一第一個字符必須為字母或下劃線個字符必須為字母或下劃線。 注意:大寫字母和小寫字母被認為是兩個不同的字符。注意:大寫字母和小寫字母被認為是兩個不同的字符。 建議:變量名的長度不超過建議:變量名的長度不超過8個字符。個字符。 C語言規(guī)定:所有的變量都應(yīng)作強制定義,做到語言規(guī)定:所有的變量都應(yīng)作強制定義,做到“先定義,后使用先定義,后使用”。 是合法變量名是合法變量名? 1. sum

5、 2. 1average 3. student_name 4. _above 5. lotus_1_2_3 total80變量名變量名(符號地址)符號地址)變量值變量值存儲單元存儲單元變量在內(nèi)存中占據(jù)變量在內(nèi)存中占據(jù)一定的存儲單元。一定的存儲單元。變量名的類型表明變量名的類型表明存儲單元的數(shù)量存儲單元的數(shù)量int totaltotal=803.3 整整 型型 數(shù)數(shù) 據(jù)據(jù)3.3.1 整型常量整型常量C語言中數(shù)值常量的表達方式:語言中數(shù)值常量的表達方式:3種種1、十進制整數(shù)、十進制整數(shù) 123 十進制十進制: 表示十進制數(shù)表示十進制數(shù)123 452、八進制整數(shù)(、八進制整數(shù)(0開頭)開頭): 01

6、23: 八進制數(shù)八進制數(shù) ,表示十進制數(shù)表示十進制數(shù)83 3、十六進制整數(shù)(、十六進制整數(shù)(0 x開頭)開頭): 0 x123:十六進制數(shù)十六進制數(shù), 表示十進制數(shù)表示十進制數(shù)2914、長整型常量:、長整型常量:在整數(shù)后加一個字母在整數(shù)后加一個字母l或或L, 123L3.3.2 整型變量整型變量一、整型變量的分類(一、整型變量的分類(IBMPC)基本型(整型)基本型(整型) int 2字節(jié)字節(jié) 短整型短整型 short 或或 short int 2字節(jié)字節(jié) 長整型長整型 long 或或 long int 4字節(jié)字節(jié) 無符號整型無符號整型:unsigned 2字節(jié)字節(jié)無符號短整型無符號短整型:u

7、nsigned short 2字節(jié)字節(jié) 無符號長整型無符號長整型:unsigned long 4字節(jié)字節(jié) C語言標準沒有規(guī)定整型變量在計算機內(nèi)存中所占語言標準沒有規(guī)定整型變量在計算機內(nèi)存中所占的字節(jié)數(shù),它與具體的機器和操作系統(tǒng)有關(guān):的字節(jié)數(shù),它與具體的機器和操作系統(tǒng)有關(guān):二、整型變量的定義二、整型變量的定義例例3.2main() int a,b,c,d; unsigned int 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

8、+u = -14 int變量的數(shù)值范圍為變量的數(shù)值范圍為-3276832767。Unsignde int變量的數(shù)值范圍為變量的數(shù)值范圍為065535。整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中是以二進制存放的。整型數(shù)據(jù)在內(nèi)存中是以二進制存放的。intint i; i;i=10;i=10;十進制數(shù)十進制數(shù)1010的二進制形式為的二進制形式為10101010,在,在C C編譯系統(tǒng)下,每一個編譯系統(tǒng)下,每一個整型變量在內(nèi)存中占整型變量在內(nèi)存中占2 2個字節(jié)。個字節(jié)。3.4 實型數(shù)據(jù)實型數(shù)據(jù)3.4.1 實型常量實型常量 實數(shù)又稱為浮點數(shù)(實數(shù)又稱為浮點數(shù)(float),有兩種

9、表達方式:有兩種表達方式:1、十進制數(shù)形式:、十進制數(shù)形式:由符號、數(shù)字和小數(shù)點組成;必須有由符號、數(shù)字和小數(shù)點組成;必須有小數(shù)點。小數(shù)點。 0.123、 .123、 123.0、 123.、 0.0(必須有小數(shù)點)必須有小數(shù)點)2、指數(shù)形式:、指數(shù)形式:由符號、數(shù)字和小數(shù)點、字母由符號、數(shù)字和小數(shù)點、字母e或或E組成;組成;字母字母e之前必須有數(shù)字,并且之前必須有數(shù)字,并且e之后的指數(shù)必為整數(shù)。之后的指數(shù)必為整數(shù)。 123e3或或123E3代表:代表:123 103 123E2.5、E3,E不合法。不合法。 總之,總之, 一個實數(shù)可以沒有小數(shù)點或一個實數(shù)可以沒有小數(shù)點或e及其后的指數(shù)部及其后

10、的指數(shù)部分,但不能二者都沒有。分,但不能二者都沒有。3.4.2 實型變量實型變量單精度:單精度: float 4字節(jié)字節(jié)(32位位) 雙精度:雙精度: double 8字節(jié)字節(jié)(64位)位) 例例1:float x,y; /* 指定指定x、y為單精度實型變量為單精度實型變量 */ double z; /* 指定指定z為雙精度實型變量為雙精度實型變量 */實型常量不分實型常量不分float和和double。例例2:float a; a=123456.711 float型變量只能接受型變量只能接受7位位 有效數(shù)字,最后兩有效數(shù)字,最后兩位數(shù)字不起作用。位數(shù)字不起作用。 double 型變量能接受型

11、變量能接受16位位 有效數(shù)字。有效數(shù)字。實型數(shù)據(jù)在內(nèi)存中的存放形式實型數(shù)據(jù)在內(nèi)存中的存放形式實型數(shù)據(jù)在內(nèi)存中是也以二進制存放的。實型數(shù)據(jù)在內(nèi)存中是也以二進制存放的。十進制數(shù)十進制數(shù)1010的二進制形式為的二進制形式為10101010,在,在C C編譯系統(tǒng)下,編譯系統(tǒng)下,每一個整型變量在內(nèi)存中占每一個整型變量在內(nèi)存中占4 4個字節(jié)(個字節(jié)(3232位)。位)。實數(shù)實數(shù)3.141593.14159在內(nèi)存中的存放形式。見(圖在內(nèi)存中的存放形式。見(圖3.73.7)+ .31459 1+ .31459 1圖圖 3.73.7實型數(shù)據(jù)的舍入誤差:實型數(shù)據(jù)的舍入誤差:例:例:3.4:main( )float

12、 a,b;a = 1234567.89e2;b = a + 20;printf(“%f”,b);輸出輸出b的值和的值和a相等。相等。3.5 字符型數(shù)據(jù)字符型數(shù)據(jù)3.5.1 字符常量字符常量 字符常量:字符常量:用單引號用單引號(撇號撇號)括起來的括起來的單個單個字符。字符。 字符在內(nèi)存中以字符在內(nèi)存中以ASCII碼存放。碼存放。如如:a、x、?、$。 注意注意,a和和A是不同的字符常量。是不同的字符常量。 a : ASCII碼碼:97 A : ASCII碼碼:65轉(zhuǎn)義字符序列:一反斜線開頭,用來表示難以用一般形式表示轉(zhuǎn)義字符序列:一反斜線開頭,用來表示難以用一般形式表示 的字符。的字符。n:回

13、車換行符,:回車換行符, 光標移到下一行的行首。光標移到下一行的行首。r:回車符,:回車符, 光標移到本行的行首。光標移到本行的行首。 t:橫向跳格符。:橫向跳格符。 v:豎向跳格符。:豎向跳格符。b:退格符。:退格符。 f :走紙換頁符。:走紙換頁符。ddd:1到到3位位8進制數(shù)字所代表的進制數(shù)字所代表的ASCII字符。字符。xhh:1到到2位位16進制數(shù)字所代表的進制數(shù)字所代表的ASCII字符。字符。:單引號字符。:單引號字符。 :雙引號字符。:雙引號字符。:反斜線字符。:反斜線字符。 0:空字符。:空字符。例、例、main() printf(abctderftgn); printf(ht

14、ibbjkn); 輸出結(jié)果:輸出結(jié)果:fgdehjk3.5.2 字符變量字符變量 字符變量用來存放字符變量用來存放一個字符一個字符常量常量. 字符變量在內(nèi)存中占字符變量在內(nèi)存中占一字節(jié)一字節(jié)。 變量賦初值變量賦初值:在定義變量的同時指定其初值在定義變量的同時指定其初值。例例1: char c1,c2; /* 定義定義c1、c2為字符變量為字符變量 */ c1 = a; c2 = b; 例例2: char c1=a; 等效等效: char c1; c1=a;例例3.4main() char c1,c2; c1 = 97; c2 = 98; printf(%c %c,c1,c2); 該例的輸出是該

15、例的輸出是:a b 字符以字符以ASCII碼存儲,其存儲方式與整數(shù)類碼存儲,其存儲方式與整數(shù)類似。從而,似。從而,C語言允許字符和整數(shù)之間進行運算。語言允許字符和整數(shù)之間進行運算。相當(dāng)于:相當(dāng)于:c1 = a; c2 = b;因為:字符以因為:字符以ASCII碼存放,碼存放,a的的ASCII碼為碼為97,b的的ASCII碼為碼為98。9798c1 c23.5.4 字符串常量字符串常量字字 符符 常常 量:量:單引號單引號括起來的一個字符。括起來的一個字符。字符串字符串常量:常量:雙引號雙引號括起來的字符序列括起來的字符序列.字符串字符串常量在內(nèi)存中的存放:每一個字符均以其常量在內(nèi)存中的存放:每

16、一個字符均以其ASCII碼存放,且碼存放,且最后最后添加一個添加一個“空字符空字符”0.例:例: How do you do., CHINA CHINA存放在內(nèi)存中的情況是:存放在內(nèi)存中的情況是:(6字節(jié)存字節(jié)存儲器,不是儲器,不是5字節(jié)字節(jié)) C H I N A 0 最后一個字符最后一個字符.。3.6 變量賦初值變量賦初值在定義變量的同時指定其初值在定義變量的同時指定其初值。例例、 int a = 3; float f = 3.56; char c = a; int a, b, c = 5; 注意:多個變量指定相同的初值。注意:多個變量指定相同的初值。 int a = b = c = 3 ;

17、 int a = 3, b = 3, c = 3; int a;a=3;int a,b,c;c=5;3.7 各類數(shù)據(jù)混合運算各類數(shù)據(jù)混合運算整型、實型(包括單、雙精度)、字符型數(shù)整型、實型(包括單、雙精度)、字符型數(shù)據(jù)可以混合運算。例、據(jù)可以混合運算。例、 10 + a + 1.5 - 8765.1234 * b混合運算時,先轉(zhuǎn)換成同一種類型,然后進混合運算時,先轉(zhuǎn)換成同一種類型,然后進行運算。轉(zhuǎn)換規(guī)則如圖行運算。轉(zhuǎn)換規(guī)則如圖3-3。高高 double float long unsigned低低 int char,short例:例: int i; float f; double d; long

18、 e; 10 + a + i*f - d/e高高 double float long unsigned低低 int char,short整型整型雙精度雙精度雙精度雙精度上述轉(zhuǎn)換過程是由系統(tǒng)自動進行的。上述轉(zhuǎn)換過程是由系統(tǒng)自動進行的。3.8 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式3.8.2 算術(shù)運算符和算術(shù)表達式算術(shù)運算符和算術(shù)表達式一、基本的算術(shù)運算符一、基本的算術(shù)運算符 + + 加法加法運算符,如運算符,如3+5 正值正值運算符,如運算符,如+3 - - 減法減法運算符,如運算符,如5-2 5-2 負值負值運算符,如運算符,如-3 * * 乘法乘法運算符,如運算符,如3*5 / / 除

19、法除法運算符運算符,如,如5/3 % 模模運算符(運算符(求余求余運算符),如運算符),如7%4二、算術(shù)表達式和運算符的優(yōu)先級二、算術(shù)表達式和運算符的優(yōu)先級 與結(jié)合性與結(jié)合性 算術(shù)表達式算術(shù)表達式:用算術(shù)運算符和括號將運算對象連接起用算術(shù)運算符和括號將運算對象連接起來、符合來、符合C語法規(guī)則的式子。語法規(guī)則的式子。 如:如: a*b/c - 1.5 + a 運算符的優(yōu)先級運算符的優(yōu)先級:先乘除、后加減;先括號。:先乘除、后加減;先括號。 運算符的結(jié)合性運算符的結(jié)合性:運算對象兩側(cè)的運算符優(yōu)先級相:運算對象兩側(cè)的運算符優(yōu)先級相同時,運算符的結(jié)合方向(左同時,運算符的結(jié)合方向(左右)。右)。 左結(jié)

20、合性:左結(jié)合性:結(jié)合方向為從左至右(先左后右,簡稱左結(jié)結(jié)合方向為從左至右(先左后右,簡稱左結(jié)合)。算術(shù)運算符為左結(jié)合。合)。算術(shù)運算符為左結(jié)合。 右結(jié)合性右結(jié)合性:結(jié)合方向為從右至左(先右后左,簡稱右:結(jié)合方向為從右至左(先右后左,簡稱右結(jié)合)。結(jié)合)。賦值運算符賦值運算符=為右結(jié)合為右結(jié)合。 例例: a = b + c 由于賦值運算符由于賦值運算符=優(yōu)先級低,先執(zhí)行右邊的優(yōu)先級低,先執(zhí)行右邊的b+c,再賦,再賦值給值給a。三、強制類型轉(zhuǎn)換三、強制類型轉(zhuǎn)換 運算符兩側(cè)的數(shù)據(jù)類型不同時,先自動進行類型轉(zhuǎn)換,運算符兩側(cè)的數(shù)據(jù)類型不同時,先自動進行類型轉(zhuǎn)換,再運算。程序員可以強制進行某種轉(zhuǎn)換。再運算

21、。程序員可以強制進行某種轉(zhuǎn)換。 強制類型轉(zhuǎn)換的強制類型轉(zhuǎn)換的一般形式一般形式是:是: (類型名)(表達式)(類型名)(表達式) (int) a;例、例、 (double)a; /* 將將a轉(zhuǎn)換為轉(zhuǎn)換為double類型類型 */(int)()(x+y); /* 將將x+y的值轉(zhuǎn)換為的值轉(zhuǎn)換為int類型類型 */(float)()(5 % 3); /* 將將5%3的值轉(zhuǎn)換為的值轉(zhuǎn)換為float類型類型 */注意注意:(int)()(x+y); /* 將將x+y的值轉(zhuǎn)換為的值轉(zhuǎn)換為int類型類型 */(int)x+y; /* 將將x的值轉(zhuǎn)換為的值轉(zhuǎn)換為int類型,再與類型,再與y相加相加 */ (i

22、nt) (x); (int) x; (表達式僅為一個變量時,括號可以省略)(表達式僅為一個變量時,括號可以省略) int (x); /* 變量變量x的類型不發(fā)生變化的類型不發(fā)生變化*/ 說明:強制類型轉(zhuǎn)換時,得到一個所需類型的中間說明:強制類型轉(zhuǎn)換時,得到一個所需類型的中間變量,原來變量的類型不發(fā)生變化。變量,原來變量的類型不發(fā)生變化。 四、自增、自減運算符四、自增、自減運算符 自增自增:使變量的值加:使變量的值加1; 自減自減:使變量的值減:使變量的值減1。 +i ; /* 在使用在使用i之前使之前使i加加1 */ - -i ; /* 在使用在使用i之前使之前使i減減1 */ i+ ; /*

23、 在使用在使用i之后使之后使i加加1 */ i- - ; /* 在使用在使用i之后使之后使i減減1 */ 自增自減自增自減運算符運算符特點特點:右結(jié)合性。右結(jié)合性。 自增自減自增自減運算符運算符的的運算對象只能是變量。運算對象只能是變量。例:例: i = 3; j = +i; /* 先使先使i加加1,再賦給,再賦給j。*/ 執(zhí)行后:執(zhí)行后:j=4, i=4 i = 3; j = i+; /* 先把先把i賦給賦給j,再使,再使i加加1。*/ 執(zhí)行后執(zhí)行后:j=3,i=4 i = 3; j = (i+)+(i+)+(i+); 執(zhí)行后:執(zhí)行后:j=9, i=6 i = 3; j = (+i)+(+i

24、)+(+i); 執(zhí)行后:執(zhí)行后:j=18, i=6 注意:不要寫成注意:不要寫成j+i形式。形式。例例main() int a; a = 3; printf(%d, a+); printf(%d, a); 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式一、賦值運算符:一、賦值運算符:=作用:將一個表達式的值賦給變量。作用:將一個表達式的值賦給變量。例、例、 a = 3; /*常數(shù)3賦給變量a。常數(shù)是特殊的表達式 */ a = b + c + 1;二、賦值時的類型轉(zhuǎn)換二、賦值時的類型轉(zhuǎn)換 當(dāng)賦值運算符兩側(cè)的類型不同時,在賦值前進行類型轉(zhuǎn)換。當(dāng)賦值運算符兩側(cè)的類型不同時,在賦值前進行類型轉(zhuǎn)換

25、。1)1) 整整實:截掉小數(shù)部分實:截掉小數(shù)部分2)2) 實(單、雙精度)實(單、雙精度)整:數(shù)值不變,存為浮點數(shù)形式整:數(shù)值不變,存為浮點數(shù)形式3)3) 整整charchar:整型低:整型低8 8位位charchar 整型高整型高8 8位位00或符號位擴展或符號位擴展( (因機器而不同因機器而不同) )4)4) long intintlong intint:符號位擴展:符號位擴展5)5) intlong intintlong int:intlong int intlong int 低低1616位位6)6) long intunsigned intlong intunsigned int:高位

26、補:高位補0 07)7) 整型整型(字節(jié)數(shù)相同的字節(jié)數(shù)相同的)unsigned )unsigned 整型:原樣送入。整型:原樣送入。 若超過整型表示范圍,會出錯。若超過整型表示范圍,會出錯。8)8) unsigned(unsigned(字節(jié)數(shù)相同的字節(jié)數(shù)相同的) )非非unsignedunsigned整型:整型: 原樣送入,符號位也作為數(shù)值原樣送入,符號位也作為數(shù)值三、復(fù)合的賦值運算符三、復(fù)合的賦值運算符1、 a += 3; 等價語句等價語句 a = a + 3; 2、 x *= y + 8; 等價語句等價語句 x = x*(y+8) 3、 x %= 3; 等價語句等價語句 x = x % 3

27、;4、 x - =(y+2););等價語句等價語句x=x -(y+2)四、賦值表達式四、賦值表達式一般形式一般形式: 特點特點:1、賦值表達、賦值表達式的值式的值是被賦值變量的值 2、賦值表達式中的賦值表達式中的“表達式表達式”也可以是賦值也可以是賦值表達式表達式例:例:賦值表達式:賦值表達式: a = 5 /表達式的值是被賦值變量的值*/ 賦值賦值語句: a = 5; a = (b = 5) /* b的值等于5,表達式b=5的值等于5,因此a的值等于5 */ a = b = 5 /* 與上述表達式的意義相同 */ a=(b=4)+(c=6) /*表達式的值為10*/ 例例、main() int a=12; int b,c; c = a+ (b = 6); a+ = a- = a*a; printf(%d,%d,%dn,a,b,c); 注注:a+ = a- = a*a 先先a - =a*a:a=a-a*a=12-144 = -132 再再a+= -132:a=a+(-132)= -2643.10 逗號運算符和逗號運算符和逗號表達式逗號表達式 逗號運算符逗號運算符:, 逗號表達式逗號表達式:用逗號運算符把兩個表達式連接起來的表達式。 一般形式一般形式為: 表達式1,表達式2,.,表達式n 逗號表達式的

溫馨提示

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

評論

0/150

提交評論