




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章第三章 數據類型、運算符與表達式數據類型、運算符與表達式 基本數據類型基本數據類型: 整整 型型: int, long ,short 字字 符符 型型: char 單精度型:單精度型: float, 雙精度型:雙精度型: double 基本的運算符:基本的運算符: 算術運算符算術運算符: +、-、*、/、+、- - 賦值運算符:賦值運算符:= 逗號運算符逗號運算符 :,3.1 C的數據類型的數據類型 數據類型是任何數據類型是任何語言的基礎語言的基礎基本數據類型定義關鍵字基本數據類型定義關鍵字: 整整 型型: int 字字 符符 型型: char 單精度浮點型單精度浮點型: float 雙
2、精度浮點型雙精度浮點型: double基本數據類型修飾符基本數據類型修飾符: 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替換替換。程序運行結果是程序運行結果是:total = 3003.
4、2.2 變量(變量(Variable) 變量變量:在程序運行過程中,其值可以被改變的量。在程序運行過程中,其值可以被改變的量。 變量用標識符表示變量用標識符表示,以以字母字母、數字數字、下劃線下劃線 組成,且組成,且第一第一個字符必須為字母或下劃線個字符必須為字母或下劃線。 注意:大寫字母和小寫字母被認為是兩個不同的字符。注意:大寫字母和小寫字母被認為是兩個不同的字符。 建議:變量名的長度不超過建議:變量名的長度不超過8個字符。個字符。 C語言規定:所有的變量都應作強制定義,做到語言規定:所有的變量都應作強制定義,做到“先定義,后使用先定義,后使用”。 是合法變量名是合法變量名? 1. sum
5、 2. 1average 3. student_name 4. _above 5. lotus_1_2_3 total80變量名變量名(符號地址)符號地址)變量值變量值存儲單元存儲單元變量在內存中占據變量在內存中占據一定的存儲單元。一定的存儲單元。變量名的類型表明變量名的類型表明存儲單元的數量存儲單元的數量int totaltotal=803.3 整整 型型 數數 據據3.3.1 整型常量整型常量C語言中數值常量的表達方式:語言中數值常量的表達方式:3種種1、十進制整數、十進制整數 123 十進制十進制: 表示十進制數表示十進制數123 452、八進制整數(、八進制整數(0開頭)開頭): 01
6、23: 八進制數八進制數 ,表示十進制數表示十進制數83 3、十六進制整數(、十六進制整數(0 x開頭)開頭): 0 x123:十六進制數十六進制數, 表示十進制數表示十進制數2914、長整型常量:、長整型常量:在整數后加一個字母在整數后加一個字母l或或L, 123L3.3.2 整型變量整型變量一、整型變量的分類(一、整型變量的分類(IBMPC)基本型(整型)基本型(整型) int 2字節字節 短整型短整型 short 或或 short int 2字節字節 長整型長整型 long 或或 long int 4字節字節 無符號整型無符號整型:unsigned 2字節字節無符號短整型無符號短整型:u
7、nsigned short 2字節字節 無符號長整型無符號長整型:unsigned long 4字節字節 C語言標準沒有規定整型變量在計算機內存中所占語言標準沒有規定整型變量在計算機內存中所占的字節數,它與具體的機器和操作系統有關:的字節數,它與具體的機器和操作系統有關:二、整型變量的定義二、整型變量的定義例例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變量的數值范圍為變量的數值范圍為-3276832767。Unsignde int變量的數值范圍為變量的數值范圍為065535。整型數據在內存中的存放形式整型數據在內存中的存放形式整型數據在內存中是以二進制存放的。整型數據在內存中是以二進制存放的。intint i; i;i=10;i=10;十進制數十進制數1010的二進制形式為的二進制形式為10101010,在,在C C編譯系統下,每一個編譯系統下,每一個整型變量在內存中占整型變量在內存中占2 2個字節。個字節。3.4 實型數據實型數據3.4.1 實型常量實型常量 實數又稱為浮點數(實數又稱為浮點數(float),有兩種
9、表達方式:有兩種表達方式:1、十進制數形式:、十進制數形式:由符號、數字和小數點組成;必須有由符號、數字和小數點組成;必須有小數點。小數點。 0.123、 .123、 123.0、 123.、 0.0(必須有小數點)必須有小數點)2、指數形式:、指數形式:由符號、數字和小數點、字母由符號、數字和小數點、字母e或或E組成;組成;字母字母e之前必須有數字,并且之前必須有數字,并且e之后的指數必為整數。之后的指數必為整數。 123e3或或123E3代表:代表:123 103 123E2.5、E3,E不合法。不合法。 總之,總之, 一個實數可以沒有小數點或一個實數可以沒有小數點或e及其后的指數部及其后
10、的指數部分,但不能二者都沒有。分,但不能二者都沒有。3.4.2 實型變量實型變量單精度:單精度: float 4字節字節(32位位) 雙精度:雙精度: double 8字節字節(64位)位) 例例1:float x,y; /* 指定指定x、y為單精度實型變量為單精度實型變量 */ double z; /* 指定指定z為雙精度實型變量為雙精度實型變量 */實型常量不分實型常量不分float和和double。例例2:float a; a=123456.711 float型變量只能接受型變量只能接受7位位 有效數字,最后兩有效數字,最后兩位數字不起作用。位數字不起作用。 double 型變量能接受型
11、變量能接受16位位 有效數字。有效數字。實型數據在內存中的存放形式實型數據在內存中的存放形式實型數據在內存中是也以二進制存放的。實型數據在內存中是也以二進制存放的。十進制數十進制數1010的二進制形式為的二進制形式為10101010,在,在C C編譯系統下,編譯系統下,每一個整型變量在內存中占每一個整型變量在內存中占4 4個字節(個字節(3232位)。位)。實數實數3.141593.14159在內存中的存放形式。見(圖在內存中的存放形式。見(圖3.73.7)+ .31459 1+ .31459 1圖圖 3.73.7實型數據的舍入誤差:實型數據的舍入誤差:例:例:3.4:main( )float
12、 a,b;a = 1234567.89e2;b = a + 20;printf(“%f”,b);輸出輸出b的值和的值和a相等。相等。3.5 字符型數據字符型數據3.5.1 字符常量字符常量 字符常量:字符常量:用單引號用單引號(撇號撇號)括起來的括起來的單個單個字符。字符。 字符在內存中以字符在內存中以ASCII碼存放。碼存放。如如:a、x、?、$。 注意注意,a和和A是不同的字符常量。是不同的字符常量。 a : ASCII碼碼:97 A : ASCII碼碼:65轉義字符序列:一反斜線開頭,用來表示難以用一般形式表示轉義字符序列:一反斜線開頭,用來表示難以用一般形式表示 的字符。的字符。n:回
13、車換行符,:回車換行符, 光標移到下一行的行首。光標移到下一行的行首。r:回車符,:回車符, 光標移到本行的行首。光標移到本行的行首。 t:橫向跳格符。:橫向跳格符。 v:豎向跳格符。:豎向跳格符。b:退格符。:退格符。 f :走紙換頁符。:走紙換頁符。ddd:1到到3位位8進制數字所代表的進制數字所代表的ASCII字符。字符。xhh:1到到2位位16進制數字所代表的進制數字所代表的ASCII字符。字符。:單引號字符。:單引號字符。 :雙引號字符。:雙引號字符。:反斜線字符。:反斜線字符。 0:空字符。:空字符。例、例、main() printf(abctderftgn); printf(ht
14、ibbjkn); 輸出結果:輸出結果:fgdehjk3.5.2 字符變量字符變量 字符變量用來存放字符變量用來存放一個字符一個字符常量常量. 字符變量在內存中占字符變量在內存中占一字節一字節。 變量賦初值變量賦初值:在定義變量的同時指定其初值在定義變量的同時指定其初值。例例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碼存儲,其存儲方式與整數類碼存儲,其存儲方式與整數類似。從而,似。從而,C語言允許字符和整數之間進行運算。語言允許字符和整數之間進行運算。相當于:相當于:c1 = a; c2 = b;因為:字符以因為:字符以ASCII碼存放,碼存放,a的的ASCII碼為碼為97,b的的ASCII碼為碼為98。9798c1 c23.5.4 字符串常量字符串常量字字 符符 常常 量:量:單引號單引號括起來的一個字符。括起來的一個字符。字符串字符串常量:常量:雙引號雙引號括起來的字符序列括起來的字符序列.字符串字符串常量在內存中的存放:每一個字符均以其常量在內存中的存放:每
16、一個字符均以其ASCII碼存放,且碼存放,且最后最后添加一個添加一個“空字符空字符”0.例:例: How do you do., CHINA CHINA存放在內存中的情況是:存放在內存中的情況是:(6字節存字節存儲器,不是儲器,不是5字節字節) 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 各類數據混合運算各類數據混合運算整型、實型(包括單、雙精度)、字符型數整型、實型(包括單、雙精度)、字符型數據可以混合運算。例、據可以混合運算。例、 10 + a + 1.5 - 8765.1234 * b混合運算時,先轉換成同一種類型,然后進混合運算時,先轉換成同一種類型,然后進行運算。轉換規則如圖行運算。轉換規則如圖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整型整型雙精度雙精度雙精度雙精度上述轉換過程是由系統自動進行的。上述轉換過程是由系統自動進行的。3.8 算術運算符和算術表達式算術運算符和算術表達式3.8.2 算術運算符和算術表達式算術運算符和算術表達式一、基本的算術運算符一、基本的算術運算符 + + 加法加法運算符,如運算符,如3+5 正值正值運算符,如運算符,如+3 - - 減法減法運算符,如運算符,如5-2 5-2 負值負值運算符,如運算符,如-3 * * 乘法乘法運算符,如運算符,如3*5 / / 除
19、法除法運算符運算符,如,如5/3 % 模模運算符(運算符(求余求余運算符),如運算符),如7%4二、算術表達式和運算符的優先級二、算術表達式和運算符的優先級 與結合性與結合性 算術表達式算術表達式:用算術運算符和括號將運算對象連接起用算術運算符和括號將運算對象連接起來、符合來、符合C語法規則的式子。語法規則的式子。 如:如: a*b/c - 1.5 + a 運算符的優先級運算符的優先級:先乘除、后加減;先括號。:先乘除、后加減;先括號。 運算符的結合性運算符的結合性:運算對象兩側的運算符優先級相:運算對象兩側的運算符優先級相同時,運算符的結合方向(左同時,運算符的結合方向(左右)。右)。 左結
20、合性:左結合性:結合方向為從左至右(先左后右,簡稱左結結合方向為從左至右(先左后右,簡稱左結合)。算術運算符為左結合。合)。算術運算符為左結合。 右結合性右結合性:結合方向為從右至左(先右后左,簡稱右:結合方向為從右至左(先右后左,簡稱右結合)。結合)。賦值運算符賦值運算符=為右結合為右結合。 例例: a = b + c 由于賦值運算符由于賦值運算符=優先級低,先執行右邊的優先級低,先執行右邊的b+c,再賦,再賦值給值給a。三、強制類型轉換三、強制類型轉換 運算符兩側的數據類型不同時,先自動進行類型轉換,運算符兩側的數據類型不同時,先自動進行類型轉換,再運算。程序員可以強制進行某種轉換。再運算
21、。程序員可以強制進行某種轉換。 強制類型轉換的強制類型轉換的一般形式一般形式是:是: (類型名)(表達式)(類型名)(表達式) (int) a;例、例、 (double)a; /* 將將a轉換為轉換為double類型類型 */(int)()(x+y); /* 將將x+y的值轉換為的值轉換為int類型類型 */(float)()(5 % 3); /* 將將5%3的值轉換為的值轉換為float類型類型 */注意注意:(int)()(x+y); /* 將將x+y的值轉換為的值轉換為int類型類型 */(int)x+y; /* 將將x的值轉換為的值轉換為int類型,再與類型,再與y相加相加 */ (i
22、nt) (x); (int) x; (表達式僅為一個變量時,括號可以省略)(表達式僅為一個變量時,括號可以省略) int (x); /* 變量變量x的類型不發生變化的類型不發生變化*/ 說明:強制類型轉換時,得到一個所需類型的中間說明:強制類型轉換時,得到一個所需類型的中間變量,原來變量的類型不發生變化。變量,原來變量的類型不發生變化。 四、自增、自減運算符四、自增、自減運算符 自增自增:使變量的值加:使變量的值加1; 自減自減:使變量的值減:使變量的值減1。 +i ; /* 在使用在使用i之前使之前使i加加1 */ - -i ; /* 在使用在使用i之前使之前使i減減1 */ i+ ; /*
23、 在使用在使用i之后使之后使i加加1 */ i- - ; /* 在使用在使用i之后使之后使i減減1 */ 自增自減自增自減運算符運算符特點特點:右結合性。右結合性。 自增自減自增自減運算符運算符的的運算對象只能是變量。運算對象只能是變量。例:例: i = 3; j = +i; /* 先使先使i加加1,再賦給,再賦給j。*/ 執行后:執行后:j=4, i=4 i = 3; j = i+; /* 先把先把i賦給賦給j,再使,再使i加加1。*/ 執行后執行后:j=3,i=4 i = 3; j = (i+)+(i+)+(i+); 執行后:執行后:j=9, i=6 i = 3; j = (+i)+(+i
24、)+(+i); 執行后:執行后:j=18, i=6 注意:不要寫成注意:不要寫成j+i形式。形式。例例main() int a; a = 3; printf(%d, a+); printf(%d, a); 3.9 賦值運算符和賦值表達式賦值運算符和賦值表達式一、賦值運算符:一、賦值運算符:=作用:將一個表達式的值賦給變量。作用:將一個表達式的值賦給變量。例、例、 a = 3; /*常數3賦給變量a。常數是特殊的表達式 */ a = b + c + 1;二、賦值時的類型轉換二、賦值時的類型轉換 當賦值運算符兩側的類型不同時,在賦值前進行類型轉換。當賦值運算符兩側的類型不同時,在賦值前進行類型轉換
25、。1)1) 整整實:截掉小數部分實:截掉小數部分2)2) 實(單、雙精度)實(單、雙精度)整:數值不變,存為浮點數形式整:數值不變,存為浮點數形式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) 整型整型(字節數相同的字節數相同的)unsigned )unsigned 整型:原樣送入。整型:原樣送入。 若超過整型表示范圍,會出錯。若超過整型表示范圍,會出錯。8)8) unsigned(unsigned(字節數相同的字節數相同的) )非非unsignedunsigned整型:整型: 原樣送入,符號位也作為數值原樣送入,符號位也作為數值三、復合的賦值運算符三、復合的賦值運算符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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州護理職業技術學院《數字媒體藝術綜合設計》2023-2024學年第二學期期末試卷
- 長江職業學院《普拉提健身(健身類)》2023-2024學年第二學期期末試卷
- 黃山學院《海洋環境生物技術及應用》2023-2024學年第二學期期末試卷
- 蘭州外語職業學院《中級英語》2023-2024學年第二學期期末試卷
- 湖南安全技術職業學院《超聲診斷學》2023-2024學年第一學期期末試卷
- 徽商職業學院《計算機系統應用基礎》2023-2024學年第二學期期末試卷
- 江西信息應用職業技術學院06探測1劉秀娟制作
- 遼寧省遼陽市2025年高考考前針對性練習(二模)數學試題試卷含解析
- 浙江工商大學《社會科學名著》2023-2024學年第二學期期末試卷
- 萊蕪職業技術學院《食品工程原理實驗》2023-2024學年第二學期期末試卷
- 2025年培訓報考安全員試題及答案
- 住建局發布!建設工程消防驗收常見質量通病手冊
- 汶川縣欣禹林業有限責任公司工作人員招聘考試真題2024
- 國家鐵路局直屬事業單位社會統一招聘考試真題2024
- 廣西壯族自治區馬山縣實驗高中-主題班會-高中如何上好自習課【課件】
- 4.2 做自信的人(教學課件)2024-2025學年道德與法治 七年級下冊 統編版
- 七年級道法下冊 第一單元 綜合測試卷(人教海南版 2025年春)
- 2025年江蘇農林職業技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- GB/T 18851.2-2024無損檢測滲透檢測第2部分:滲透材料的檢驗
- 店鋪轉讓協議范本1
- 水電站安全生產獎懲制度
評論
0/150
提交評論