C語言的基本數據類型與表達式_第1頁
C語言的基本數據類型與表達式_第2頁
C語言的基本數據類型與表達式_第3頁
C語言的基本數據類型與表達式_第4頁
C語言的基本數據類型與表達式_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1回顧復習1、C語言程序的基本結構。2、C語言中字符集、標示符和關鍵字。3、C語言程序的開發(fā)運行環(huán)境。2第2章 C語言的基本數據類型與表達式3本章主要內容o本章介紹C語言的基礎,包括:n 數據類型n 運算符和表達式o均是程序設計的基本知識o為什么討論這些知識?4例如:【例2.1】計算圓的面積,半徑為 5 cm。 程序如下:main( ) float=* *printf (%fn ,) ; 返回5 62.1 C語言的基本數據類型語言的基本數據類型2.2 常量與變量常量與變量2.3 運算符與表達式運算符與表達式2.4 數據類型轉換數據類型轉換第2章 C語言的基本數據類型與表達式7 字符型(char

2、char) 整型(short,int,long,unsignedshort,int,long,unsigned) 單精度型(floatfloat) 實型 雙精度型(doubledouble) 枚舉類型(enumenum) 數組類型( ) 構造類型 結構體類型(struct) 共用體類型(union) 指針類型(*) 空類型(void)數據類型決定:1. 數據占內存字節(jié)數2. 數據取值范圍3. 其上可進行的操作8 如如Turbo C中,有中,有 short(2字節(jié)字節(jié))int(2字節(jié)字節(jié)) long(4字節(jié)字節(jié)) 1、整型數據的分類:整型數據的分類: 根據數據所占的存儲長度的不同分為根據數據所占

3、的存儲長度的不同分為: :int、short、long; 同樣存儲長度的數據又分同樣存儲長度的數據又分unsigned、signed;故可組合故可組合 出六種類型。出六種類型。 2、整型數據的值域:整型數據的值域:由機器中數據的存儲長度決定由機器中數據的存儲長度決定思考:思考:int a=20000,b=20000,c; c=a+b; c的值為多少?的值為多少?如如c定義為定義為long型是否能解決問題?型是否能解決問題?關鍵字關鍵字所占位數所占位數取值范圍取值范圍short16-3276832767unsigned short16065535int16-3276832767unsigned

4、int16065535long32-21474836482147483647二、整數類型(采用定點整數的存儲格式,只能表示純整數)9* 八進制的數碼范圍為八進制的數碼范圍為07; 018 * 十六進制的十六進制的數碼除了數字數碼除了數字0 09 9外外, ,還使用英文字母還使用英文字母a f (或或A F)表示表示1015。 如:如:0 x1e 3 3、(1) (1) 十進制形式十進制形式: :與數學上的整數表示相同與數學上的整數表示相同 例如例如: 12, -100, 0: 12, -100, 0 (2) 八進制形式八進制形式:在數碼前加數字在數碼前加數字0 例如例如: 012=1*81+2

5、*80=10(十進制)十進制) (3) 十六進制形式十六進制形式:在數碼前加在數碼前加0X(數字(數字0和字母和字母xX) 例如例如: 0 x12=1*161+2*160=18(十進制)十進制)102、實型數據的分類及值域:實型數據的分類及值域: 注意注意三、實型1 1、(1) (1) 十進制小數形式:十進制小數形式:由數字和小數點組成;由數字和小數點組成; 例如例如: 3.4, 4., .3: 3.4, 4., .3。 小數點不能單獨出現;小數點不能單獨出現; 0.0. .0 .0 . . e e或或E E的兩邊必須有數,且其后面必須為整數;的兩邊必須有數,且其后面必須為整數; 如:如: 6

6、E0.2 6E0.2 e5e5 關鍵字關鍵字字節(jié)數字節(jié)數取值范圍取值范圍精度(位)精度(位)float43.410-38 3.410387double81.710-308 1.71030815(2) 指數形式:指數形式:“十進制數十進制數”+“ e(或或E)”+“十進制數整十進制數整數數”。 例如例如: 12.5e-6 表示表示12.510-6 。11 字符形式字符形式 功能功能 n n 換行換行 t t 橫向跳格橫向跳格 b b 退格退格 r r 回車回車 反斜杠字符反斜杠字符 單引號字符單引號字符 ddd 1ddd 1到到3 3位八進制數位八進制數表示的表示的ASCIIASCII碼對應的字

7、符碼對應的字符 xhh 1xhh 1到到2 2位十六進制位十六進制數表示的數表示的ASCIIASCII碼對應的字符碼對應的字符四、字符類型1 1、 (1) (1) 用單引號括起來的一個字符;如:用單引號括起來的一個字符;如:A、 1、?等等。 (2) (2) 用單引號括起來的由反斜杠用單引號括起來的由反斜杠( ( ) )引導的轉義字符。引導的轉義字符。例 main() printf(“Yb=n”); 運行結果:屏幕顯示:=打印機輸出:123、字符串常量: 是用一對雙引號括起來的字符序列。是用一對雙引號括起來的字符序列。 如:如:“SHANGHAI”SHANGHAI”,“AbcdeFGHijkA

8、bcdeFGHijk”,“How are you”How are you”。注意:每個字符串的后面都有一個注意:每個字符串的后面都有一個00結束符。結束符。 注意注意 a a與與“a”a”的區(qū)別。的區(qū)別。例如:字符例如:字符A A的的ASCIIASCII碼為:碼為: 6565(十進制)(十進制)=41=41(十六進制)(十六進制)=101=101(八進制)(八進制) 字符字符A A可以表示為可以表示為AA、x41x41、101101。如 101 -A 012 -n 376 - x61 -a 60 -0 483 -()h e l l o 0例例 字符串字符串“hello”hello”在內存中在內

9、存中o 字符常量與字符串常量不同a a 0例例 a“a”13一、常量與符號常量 常量是指在程序運行中,其數值不能被改變的量。 常量又可分為直接常量和符號常量。數值常量數值常量整型常量整型常量直接常量直接常量實型常量實型常量字符型常量字符型常量字符常量字符常量字符串常量字符串常量符號常量符號常量標識符定義標識符定義14 C語言中,以下語言中,以下_不是正確的常量。不是正確的常量。(等考基礎題) A)543210L B)05078 C)0 x41 D)1245 答案:答案:B注:注:543210L, 20L;長整型常量(無符號型常量同理,長整型常量(無符號型常量同理,22u)下面四個選項中,不合法

10、的實型常量的選項是:(下面四個選項中,不合法的實型常量的選項是:(基礎題) A) 160. B) .23 C)2e4.2 D)3.3e3 答案:答案:C下面四個選項中,合法的字符類型常量的選項是:(下面四個選項中,合法的字符類型常量的選項是:(基礎題) A) “c” B) ab C)108 D) 答案:答案:A2、已知、已知ch是字符型變量,下面不正確的賦值語句是:是字符型變量,下面不正確的賦值語句是: (中等難度題)A)chab B)ch0C)ch79 D)ch79 答案:答案:A 1 1、是在程序中直接引用的數據。是在程序中直接引用的數據。15 定義形式定義形式: #define 標識符標

11、識符 常量數據常量數據 例如例如: #define PI 3.14159 在程序預處理時,凡是出現標識符在程序預處理時,凡是出現標識符PI的地方都將用數據的地方都將用數據3.14159來替換。來替換。 如如: 2*2.3*PI 就等價于就等價于 2*2.3*3.14159。 變量是指變量是指以標識符為名字,其值可以改變的量。以標識符為名字,其值可以改變的量。 變量代表計算機內存中的某一存儲空間,該存儲空間變量代表計算機內存中的某一存儲空間,該存儲空間 中存放中存放的數據就是變量的值。的數據就是變量的值。2、符號常量符號常量 是是用標用標識符來表示一個數據;識符來表示一個數據;在程序不能給它賦值

12、。在程序不能給它賦值。二、 變量例 符號常量舉例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);運行結果:total=300161、定義形式:定義形式:類型標識符類型標識符 變量名變量名1 ,變量名變量名2,變量名變量名3.; 自己設定,滿足自己設定,滿足標識符的規(guī)定。標識符的規(guī)定。如:如:int,int,float,charfloat,char;不可省;不可省2、變量初始化變量初始化 在變量說明中,不允許連續(xù)給多個變量賦初值,而賦值語句中允許在變量說明中,不允許連續(xù)給多

13、個變量賦初值,而賦值語句中允許 連續(xù)賦值連續(xù)賦值 變量先定義后使用。變量先定義后使用。 注意注意int a=5, b=3; int a=5, b=3; int a=b=c=3; int a=b=c=3; int a,b,c; a=b=c=3; int a,b,c; a=b=c=3; 例如例如:int a,b,c ; float x,y; char c1,c2; 或或 int c1,c2; 編譯程序根據變量定義為其分配指定字節(jié)的內存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內存1-3隨機數main() int a,b=2; a=1; float data; da

14、ta=(a+b)*1.2; printf(“data=%fn”,data);例1 int student; stadent=19; /Undefined symbol statent in function main 17總結1、c語言中的基本數據類型: 整型(short int long unsigned)18回顧復習1、c語言中的基本數據類型: 整型(short int long unsigned)19 在數學里當多個運算符一起組成一個表達式時,我們規(guī)定在數學里當多個運算符一起組成一個表達式時,我們規(guī)定 了了優(yōu)先級優(yōu)先級(先乘除后加減)和(先乘除后加減)和結合規(guī)則結合規(guī)則(從左至右)。(從

15、左至右)。 同樣,在同樣,在C語言中,我們也規(guī)定了每個運算符的結合規(guī)則語言中,我們也規(guī)定了每個運算符的結合規(guī)則 及運算符之間的優(yōu)先級。及運算符之間的優(yōu)先級。2.3 2.3 運算符與表達式運算符與表達式 運算符:就是表示某種運算功能的符號。運算符:就是表示某種運算功能的符號。 按操作功能運算符大致可分為:算術運算符、關系運算符、按操作功能運算符大致可分為:算術運算符、關系運算符、 邏輯運算符、賦值運算符、條件運算符、逗號運算符以及邏輯運算符、賦值運算符、條件運算符、逗號運算符以及 按位運算符等。按位運算符等。 表達式:是由操作數和運算符組成的序列。表達式:是由操作數和運算符組成的序列。 如:如:

16、1+21+2* *3-4 3-4 、 35-7 35-7 、a=b%2 a=b%2 等都是等都是C C語言中的表達式。語言中的表達式。20C運算符 下面分類介紹各種運算符:下面分類介紹各種運算符:212.3 運算符與表達式學習運算符應注意:o 運算符功能o 與運算量關系n 要求運算量個數n 要求運算量類型o 運算符優(yōu)先級別o 結合方向o 結果的類型222.3 運算符與表達式算術運算符和表達式基本算術運算符: + - * / %n 結合方向:從左向右n 優(yōu)先級: - -* / % - + - (2) (3) (4)說明: “-”可為單目運算符時,右結合性 兩整數相除,結果為整數 %要求兩側均為整

17、型數據例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 1%10 = 1 0%10 = 0 5.5%2 ()23 2 2、算術表達式算術表達式 用算術運算符和括符將操作數連接起來的式子。用算術運算符和括符將操作數連接起來的式子。 優(yōu)先級:()優(yōu)先級:() * *、/ /、% +% +、- - 結合性:從左至右;結合性:從左至右; 表達式的值:表達式的值: 數值型數值型(int(int、longlong、unsignedunsigned、floatfloat、double)double);例如:例如: 已知:已知: float a=2.0;float a=2.0; int b=6

18、,c=3; int b=6,c=3; 求解:求解: a a* *b/c-1.5+a+fabs(-5)=b/c-1.5+a+fabs(-5)=?24 float a=2.0;float a=2.0; int b =6,c =3; int b =6,c =3; a a* *b/c -1.5 +a +fabs(-5)b/c -1.5 +a +fabs(-5)12.012.0/3/354.0 4.0 - 1.5- 1.52.5 2.5 + 97(int)+ 97(int)99.5 99.5 + 5+ 5104.5104.5(double)(double)思考思考 :設變量設變量a a是整型,是整型,f

19、 f是實型,是實型,i i是雙精度型,則表達式是雙精度型,則表達式10+a10+ai i* *f f值的數據類型為值的數據類型為_。(基礎(基礎題)題)A A)intintB B)floatfloatC C)doubledoubleD D)不確定)不確定double floatunsigned long long unsigned int int char,short25等價于:等價于:j=i;i+; j=i;i+; 所以所以i i的值為的值為4 4,j j的值為的值為3 3等價于:等價于:i+;j=i; i+;j=i; 所以所以i i的值為的值為4 4,j j的值為的值為4 4(1) i=3

20、;(1) i=3; j=i+; j=i+; (2) i=3;(2) i=3; j=+i; j=+i; +i,- -i+i,- -i:使用之前使:使用之前使i i的值增的值增1 1(或減(或減1 1);); i+,ii+,i- - - - :使用之后使:使用之后使i i的值增的值增1 1(或減(或減1 1););分析下面幾種情況中分析下面幾種情況中i i與與j j的值:的值: 當當+、 -不與其他運算符混合使用時,不與其他運算符混合使用時,+i+i與與i+i+都等價于都等價于 i=i+1, -ii=i+1, -i與與i-i-都等價于都等價于 i=i-1i=i-1例 j=3; printf(“%d

21、”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /4/3/c=20,a=4/c=15,a=4思考:為思考:為何引入?何引入?26例如例如:(1) x=(y=12)/4 (1) x=(y=12)/4 (2) x=y=12/4 (2) x=y=12/4 (3) (3) (x=y)=12/4(x=y)=12/4四、賦值運算符和賦值表達式四、賦值運算符和賦值表達式 1 1、賦值運算符賦值運算符 = = ( (執(zhí)行功能:把執(zhí)行功能:把= =右邊的表達式的值,存入右邊的表達式的值,存入= =左邊的左邊的變量變量對應的對應的存

22、儲空間,即給此變量賦值存儲空間,即給此變量賦值) 3=2+1 a=a+2) 3=2+1 a=a+2 2 2、賦值表達式:賦值表達式:用賦值運算符將變量和表達式連接起來的式子用賦值運算符將變量和表達式連接起來的式子 形式形式: : = 求值規(guī)則求值規(guī)則: : 將將“=”=”右邊表達式的值賦給左邊的變量。右邊表達式的值賦給左邊的變量。 優(yōu)先級:優(yōu)先級: 老二(倒數);結合性:老二(倒數);結合性: 表達式的值:表達式的值:被賦值變量的值被賦值變量的值。 賦值賦值轉換轉換規(guī)則規(guī)則: :使賦值號右邊表達式值使賦值號右邊表達式值自動自動轉換成其左邊變轉換成其左邊變 量的類型量的類型y y值為值為1212

23、,x x值為值為3 3,表達式的值為,表達式的值為3 3y y值為值為3 3,x x值為值為3 3,表達式的值為,表達式的值為3 3 27練習:練習:設設a=12a=12,計算表達式,計算表達式a+=a-=aa+=a-=a* *1212和和a+=a-=aa+=a-=a* *=12=12的值的值 3 3、 * *= =、/=/=、 %=%=、 +=+=、 -=, =-=, =, &=, &=、 =、 = = 復合運算符是一個運算符復合運算符是一個運算符, ,但功能上但功能上, ,是兩個運算符功能是兩個運算符功能的組合。的組合。例如例如: a+=b : a+=b 相當于相當于 a=

24、a+ba=a+b a a* *=b =b 相當于相當于 a=aa=a* *b b注意:注意:a a* *=b+c =b+c 相當于相當于 a=aa=a* *(b+c) (b+c) 而不是而不是 a=aa=a* *b+cb+c 優(yōu)先級:優(yōu)先級: 與與 = = 是同一優(yōu)先級。是同一優(yōu)先級。 結合性:自右至左;結合性:自右至左; 表達式的值:表達式的值:被賦值變量的值被賦值變量的值。-2640 28 求值規(guī)則:求值規(guī)則: 先求解表達式先求解表達式1 1的值的值 若為真若為真( (非非0),0),求解表達式求解表達式2 2,并把表達式,并把表達式2 2的值的值 作為整個條件表達式的值作為整個條件表達式

25、的值 若為假若為假(0),(0),求解表達式求解表達式3 3,并把表達式,并把表達式3 3的值作的值作 為整個條件表達式的值為整個條件表達式的值 五、其它運算符五、其它運算符 1 1、條件運算符條件運算符 ? ?和和: : , ,它們與三個操作數組組成三元運算。它們與三個操作數組組成三元運算。 形式為形式為: : ? ? :3 優(yōu)先級:優(yōu)先級: 邏輯邏輯 條件條件 賦值賦值 結合性:自右至左;結合性:自右至左;292 2、逗號運算符:逗號運算符: , 形式形式: : 表達式表達式1 1,表達式,表達式2 2,表達式,表達式n n 求值規(guī)則求值規(guī)則: : 從左至右依次計算各表達式的值從左至右依次

26、計算各表達式的值; 優(yōu)先級:優(yōu)先級: 最低;最低; 結合性:自左至右;結合性:自左至右; 表達式的值:最后一個表達式的值。表達式的值:最后一個表達式的值。又如:又如: y = x10 ? x/10 : x0 ? x: -xy = x10 ? x/10 : x0 ? x: -x 當當x x的值為整型的的值為整型的1515時,表達式的結果為:時,表達式的結果為: 當當x x的值為整型的的值為整型的5 5時,表達式的結果為:時,表達式的結果為:15 5例如例如: int: int max, max,a=5a=5,b=3;b=3; max=ab?a:b max=ab?a:b 求求maxmax的值的值m

27、ax的值為的值為5例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);30例如:例如: a b y a b y 表達式表達式 y=a=4,b=5,a+b; y=a=4,b=5,a+b; y=(a=4,b=5,a+b); y=(a=4,b=5,a+b); y=a=(4,b=5),a+b; y=a=(4,b=5),a+b; 4 45 54 49 94 45 59 99 95 55 55 5101031 形式有兩種:形式有兩種: sizeof (變量名變量名) 返回變量的字節(jié)長度返回變量的字節(jié)長度 sizeof (類型名

28、類型名) 返回類型的字節(jié)長度返回類型的字節(jié)長度 結果為整型數。結果為整型數。 int a int a; float xfloat x; printf(“%d,%d”,sizeof(a),sizeof(xprintf(“%d,%d”,sizeof(a),sizeof(x);); printf(“%d,%d”,sizeof(int),sizeof(float); printf(“%d,%d”,sizeof(int),sizeof(float); 以上兩個以上兩個printfprintf語句結果均為語句結果均為 。例如例如3 3、求求字節(jié)運算符:字節(jié)運算符: sizeof 作用:求得變量或某種數據類

29、型所需的字節(jié)數。作用:求得變量或某種數據類型所需的字節(jié)數。2 2,4 432 C C語言允許整型、實型、字符型數據進行混合運算。語言允許整型、實型、字符型數據進行混合運算。 有有3 3種轉換方式:自動轉換、賦值轉換和強制轉換。種轉換方式:自動轉換、賦值轉換和強制轉換。 一、類型自動轉換一、類型自動轉換 2.4 2.4 數據類型轉換數據類型轉換 double floatunsigned long long unsigned int int char,short特點:由數值存儲位數少特點:由數值存儲位數少的向多的轉換;整型向實的向多的轉換;整型向實型轉換!型轉換!操作數為相同類型的不轉操作數為相同

30、類型的不轉換,仍取原類型,特別注換,仍取原類型,特別注意此時可能帶來的錯誤!意此時可能帶來的錯誤!33 int x=2;float y=1.6;char c=A;int x=2;float y=1.6;char c=A; 則:則: c + 1/x c + 1/x * * y y = = = =例如例如char c=68.5;printf(“%c”,c);65(int)+ 0(int) 65(int)+ 0(int) * * 1.6(float 1.6(float)65.0(double)65.0(double)二、賦值轉換二、賦值轉換 在在賦值時將賦值符右邊值的類型轉換成與其左邊變量類型賦值時將賦值符右邊值的類型轉換成與其左邊變量類型 一致的類型。一致的類型。 有下列幾種情況:有下列幾種情況: (1) (1) 實型實型 整型(字符型):去掉小數部分;整型(字符型):去掉小數部分;34(2) (2) 整型(字符型)整型(字符型) 實型:實型: 補足有效位;補足有效位;float

溫馨提示

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

評論

0/150

提交評論