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

下載本文檔

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

文檔簡介

1、第三章 數(shù)據(jù)類型運算符與表達式信 息 管 理 系C程序設(shè)計課件下載-樣章.ppthttp:/3.0、C語言中標識符的概念 在程序中,由程序設(shè)計者使用的名字成為標識符。標識符用以標志區(qū)分不同的東西。它可以用作函數(shù)的名字、變量、常量的名字,以及文件的名字等等。一、C語言中的標識符分類 用戶標識符 關(guān)鍵字(語句標識及類型標識)(P375附錄II)例如:real,main,char,int,float,double,long,if,for,switch,default,break等。 預(yù)定義標識符(函數(shù)名字等)例如:define,include,printf,scanf,sin等。二、用戶自定義標識符

2、的命名規(guī)則 1、標識符只能由字母、數(shù)字和下劃線( _ )組成。 2、開頭字符不能是數(shù)字; 3、不能與關(guān)鍵字重名;(關(guān)鍵字是C語言中規(guī)定好的,具有特定意義的一串字符,關(guān)鍵字都是小寫字母的) 4、最好不要與預(yù)定義的標識符重名; 5、區(qū)分大小寫。即A與a是不同的名字,一般要求都用小寫字母。 6、一般不要超過8個字符。 例如:判斷下面哪些是C語言中合法的標識符的是: aa int INT a2_ 2a a-b a_b b_2 2b abc a#b ab? A_a 3.1、C程序中的數(shù)據(jù)類型C語言的數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型(void)短整型(short)整型(int)長整型(long)整型

3、字符型實型(浮點型)枚舉類型單精度(float)雙精度(double)數(shù)組結(jié)構(gòu)體(struct)共用體(union)文件(file)一、C語言中的基本數(shù)據(jù)類型類型標識符占用空間(字節(jié))表示范圍整型有符號標準int2(-3276832767) -215215-1有符號短short2(-3276832767) -215215-1有符號長long4(-21474836482147483647) -231231-1無符號標準unsigned int2(065535) 0216-1無符號短unsigned short2(065535) 0216-1無符號長unsigned long4(042949672

4、95) 0232-1 字符型char1 實型單精度float4 雙精度double8 二、常量常量:在程序運行中,其值不能被改變的量稱為常量常量有五種類型:整型常量、實型常量、字符常量、字符串常量和符號常量1、整型常量: 用十進制表示:如123,123u,123L,123l, -123L。 用八進制表示(以0開頭):如012,013L,-013u等。 用十六進制表示(以0 x)開頭:如0 x12, 0 xAB, -0 xAL, 0 xBu等。注:其中L(或l)表示該數(shù)為長整型,U(或u)表示該數(shù)為無符號的整數(shù)二、常量2、實型常量實型常量有兩種表示形式:小數(shù)形式:45.3,0.2,-623.00

5、,.2,2.,2指數(shù)形式:45.3e0,45.3e-2,0.45E+2,3.2e3,.5e32注意:v小數(shù)部分為0的實型常量,可以寫為453.0,也可以依照日常習(xí)慣寫成453v數(shù)字之間不能出現(xiàn)空格;v用指數(shù)形式時,e(或E)的左右兩端必須有數(shù),且指數(shù)部分必須為整數(shù)。二、常量判斷下列那些是合法的C常數(shù): -0. 32 -0 x2al 0 x7g 012 -018 123u 0 x7L 0 x7u 003 e3 3.e-5 7ff 9e+2.3 .3e-3 2 34 0 x2A 0 xAU二、常量3、字符常量C語言中規(guī)定字符常數(shù)在書寫的時候要放到中間。如 ,a,#,1等。字符在計算機中存放的是他們

6、的ASCII。但在中不能放和。即是不對的。(見P374附錄I)除了形式上的字符常量外,C語言還有特殊的字符常量,如轉(zhuǎn)義字符常量。字符形式功能字符形式功能n換行f走紙換頁t橫向跳格字符v豎向跳格字符b退格ddd13位8進制代表的字符r回車xhh12位16進制代表的字符也就是說符號在C程序中可用三種方法表示:如A(ASCII碼為65)A 101 x41如:已知的ASCII碼為001,那么符號在C程序中可寫為001。 二、常量4、字符串常量字符串常量是用雙引號括起來的一個或一串字符。如:“China” “How are you.” “”等字符串在存儲的時候會自動在末尾加上0,表示結(jié)束。字符串中字符的

7、個數(shù)成為字符串的長度。如“china”在內(nèi)存存儲如下:思考:“A”與A有什么不同?下列那些是合法的C常數(shù):n 261 28 x21 “ABC29 BG” ab 0 x2.5b 7ff 8L ? 5、符號常量符號常量是由宏定義“#define”來定義的常量,在C語言中可用標識符代表一個常量。如:#define PI 3.1415901100011011010000110100101101110011000010三、變量在程序的運行過程中,其值可以改變的量稱為變量。變量要有變量名,在內(nèi)存中占據(jù)一定的存儲單元,存儲單元里存放的是變量的值。不同類型的變量所占存儲單元大小不同,變量在使用前必須先定義。1

8、、變量的定義 變量的定義格式: 數(shù)據(jù)類型 變量名; 如:int a,b; /*定義兩個整型變量這兩個變量可以分別存放一個int型的數(shù)據(jù)*/ float f; /*定義一個實型變量f ,可以存放一個單精度類型的實數(shù)*/ char c; /*定義一個字符類型的變量c,可以存放一個字符*/注: 變量的名字必須滿足用戶標識符的命名規(guī)則。 若同時定義多個同類型的變量,則中間用逗號(,)隔開。三、變量2、變量的賦值變量被定義以后,就可以存放相應(yīng)類型的數(shù)據(jù)了。給變量一個值,我們稱之為給變量賦值,用操作符 = 來實現(xiàn)。我們還可以在定義變量的同時給變量一個值,稱為變量初始化。如:int i=3, b=5, c;

9、 char c=a; float f=3.1415; c=b;在給變量賦值的時候,我們要把一個相同類型的常數(shù)賦給一個變量。三、變量3、變量值的存儲變量被定義以后,系統(tǒng)在運行時會為該變量分配一個相應(yīng)大小的存儲空間,稱為存儲單元。給變量賦值后,該變量對應(yīng)的存儲單元中會存放該值,這個值稱為變量的值。那么變量的值在變量的存儲單元中是如何表示的呢?(1)整數(shù)是以補碼的形式存放的。(正數(shù)的補碼是其本身,負數(shù)的補碼為原碼按位取反加1) 如:int a=2, b; b= -2;00000000 000000101111111111111110ab2的原碼表示:00000000 00000010-2的補碼表示:

10、11111111 11111101+1=11111111 11111110三、變量(2)、特殊情況:最大、最小和0的存儲 最大值:2151(32767) 最小值:-215(-32768)0的存儲如下:011111111111111116 159 81100000000000000016 159 81000000000000000016 159 81三、變量(3)、超出范圍的情況(溢出):如: 、閱讀下面的程序段,程序段的輸出結(jié)果是() int i=65536; printf(“%d”, i ); A)65536 B)0 C)有語法錯誤,無輸出結(jié)果 D)1 說明:65536216,即:10000

11、000000000000,第17位上為1,后面16位均為0。存儲時只能存放16位,即16個0。故結(jié)果為0。 、若有下面的程序段,則輸出結(jié)果為() int a=32768; printf(“%d”, a); 說明:32768215,即1000000000000000,第16位上為1,后面15位均為0。存儲時只能存放16位,最高位為1,故結(jié)果為32768。 、若有下面的程序段,則輸出結(jié)果為() int a=65549; printf(“%d”,a); 已知6554910000000000001101B (13)i n t b = 1 3 1 0 6 9 ; p r i n t f ( “ % d

12、” , a ) ; 已 知 1 3 1 0 6 9 11111111111111101B (-3)3.8 運算符與表達式(一)、算術(shù)運算符和算術(shù)表達式 說明:1、優(yōu)先級:5+2*32、結(jié)合性:5*2%3用算術(shù)運算符和小括號將數(shù)值連接起來的式子叫算術(shù)表達式。如:1+2*(3-1)%2操作符作用運算對象運算結(jié)果優(yōu)先級結(jié)合性*乘整型或?qū)嵭驼突驅(qū)嵭?自左向右/除%求余整型整型+加整型或?qū)嵭驼突驅(qū)嵭?-減(一)、算術(shù)運算符和算術(shù)表達式 寫出下列算式的C語言表達式: (求平方根的函數(shù)為sqrt)如:以下變量x,y,z均為double類型且已正確賦值,不能正確表示數(shù)學(xué)式子 的C語言表達式的是()A)x/

13、y*z B)x*(1/(y*z) C)x/y*1/z D)x/y/z b/(a+b/a) (x-y*z)/(a+b+c) sqrt(a+b)*(b+c)*(c+a)(一)算術(shù)運算符和算術(shù)表達式表達式的值:表達式運算得到的最終結(jié)果為表達式的值。也就是整個式子代表的值如a=5,b=2; a+b 7(二)賦值運算符和賦值表達式 賦值運算符:= 格式:變量=表達式 如:int a,b; 下面都是正確的賦值表達式 a=5; b=3; a=2+3; a=a+2; b=a*a;賦值運算為“從右向左”結(jié)合的。如x=y=z=3 它等價于:x=(y=(z=3)(三)自反運算賦值運算中有如下的特殊形式:變量在原先的

14、基礎(chǔ)上做一些運算后的結(jié)果,作為新的變量的值。這些表達式又可寫為后面的形式。這些運算符、*、/=、%=叫做自反運算符。分別稱為自反加、自反減、自反乘、自反除和自反取余(自反取模)。這樣的運算稱為自反運算。a=a+b; a+=b;a=a-b;a-=b;a=a*b;a*=b;a=a/b;a/=b;a=a%b; a%=b;由于該運算可看作是一種特殊的賦值運算,故其結(jié)合性仍然是“自右向左”的。如:a=b*=a+2 等價于b=b*(a+2); a=b;如:設(shè)k=2, i=2, m=(k+=i*=k) 則m= i= (6,4)(四)自加、自減運算自加、自減運算符的作用是使變量的值增1或減1。運算符為:、。如

15、:+a, a+, - -a, a- -自加與自減運算是一種特殊的賦值運算。、在前表示變量的值先加1,再作為整個表達式的值。、在后表示先將變量的值作為表達式的值,然后變量的值再加1。如:設(shè)a=5; b=a+; 則b=5, a=6;b=+a; 則a=6, b=6;b=a-; 則b=5, a=4;b=-a; 則a=4, b=4;自加、自減運算也是賦值運算,故運算的對象只能是變量,不能是常數(shù)或表達式。即:5 (x+y)+ 都是錯誤的。復(fù)習(xí)鞏固練習(xí):復(fù)習(xí)鞏固練習(xí):1、已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97,則字符常量101指的是() A)字符A B)字符a C)字符e D)非

16、法的常量2、以下選項中合法的實型常數(shù)是()A)5E2. .0 B)E-3 C). .2E0 D)1. .3E3、在C語言中,合法的長整型常數(shù)是() A)0L B)4962710 C)324562& D)16D4、以下選項中,不屬于C語言的數(shù)據(jù)類型的是() A)signed short int B)unsigned long int C)unsigned int D)long short5、以下選項中,與k=n+完全等價的表達式是() A)k=n, n=n+1 B)n=n+1, k=n C)k=+n D)k+=n+16、以下程序段的輸出結(jié)果是() int x=10,y=10; print

17、f(“%d %d”, x-, +y)7、設(shè)int a=2, 則執(zhí)行完語句a+=a-=a*a后,a的值為()10 11-4復(fù)習(xí)鞏固練習(xí):復(fù)習(xí)鞏固練習(xí): 8、C語言中int型變量所占字節(jié)數(shù)是() 9、與數(shù)學(xué)式子 對應(yīng)的C語言表達式是() A)3*xn/(2*x-1) B)3*x*n/(2*x-1) C)3*pow(x,n)(1/(2*x-1) D)3*pow(n,x)/(2*x-1)10、C語言提供的合法的數(shù)據(jù)類型標識符是()A)Double B)short C)interger D)Char11、C語言中運算對象必須是整型的運算符是()A) B)/ C) D)12、下面合法的C語言字符常量是()

18、 A)t B)”a” C)65 D)A13、若有int a=5;則表達式a+的值是()14、以下程序的輸出結(jié)果是()main()int a=0; a+=(a=8); printf(“%d”, a ); 2216復(fù)習(xí)鞏固練習(xí):復(fù)習(xí)鞏固練習(xí):15、以下程序的輸出結(jié)果是()main()int x=023; printf(“%d”,-x);16、下列選項中,不能用作標識符的是()A)_1234_ B)_1_2 C)int_2_ D)2_int_17、有以下程序main()char a=a , b; printf(“%c,” , +a); printf(“%cn”, b=a+); 程序運行后的輸出結(jié)果是

19、() A)b, b B)b, c C)a, b D)a, c18、以下程序運行后的輸出結(jié)果是()main()int a, b, c; a=25; b=025; c=0 x25; printf(“%d %d %dn”,a,b,c); 1825 21 37五、關(guān)于算術(shù)運算與賦值注意事項1、*、/ 運算,運算對象是整型、實型均可。(、*、/=同)整型(、*、/)整型整型 如:3+25 9/51實型(、*、/)實型實型 如:3.02.05.0 9.0/5.01.8若兩個操作數(shù)一個為整型、一個為實型,則結(jié)果為實型。如:32.05.0 9.0 / 51.82、關(guān)于運算對象只能為整型數(shù)據(jù)。同樣的運算對象也只

20、能為整型數(shù)據(jù)。如:3.52是不對的。五、關(guān)于算術(shù)運算與賦值注意事項3、關(guān)于字符數(shù)據(jù)與整型數(shù)據(jù)由于字符數(shù)據(jù)在運行時是以ASCII碼的形式存儲的,故字符數(shù)據(jù)與整型數(shù)據(jù)之間存在天然的聯(lián)系。可以將整型數(shù)據(jù)賦值給一個字符變量。則這個字符變量的值為該整型數(shù)據(jù)對應(yīng)的字符。 如:char ch; ch=65; printf(“%c”,ch); 則會輸出A可以將一個字符賦值給一個整型變量,整型變量的值為該字符的ASCII碼值。如:int a=A; printf(“%d”,a); 則輸出65。若將一個字符變量按整型方式輸出,則輸出其ASCII碼。如:char ch=A; printf(“%d”, ch); 則輸出

21、65。若字符型數(shù)據(jù)與整型數(shù)據(jù)產(chǎn)生混合運算,則字符型數(shù)據(jù)將自動轉(zhuǎn)換成對應(yīng)的ASCII碼值后,再參與運算。如:int i=5, b; char ch=A; 則i+ch的結(jié)果為70。 六、數(shù)據(jù)類型轉(zhuǎn)換 1、算術(shù)運算符轉(zhuǎn)換:C語言中,整型、實型、字符型數(shù)據(jù)之間可以混合運算。再進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進行運算。轉(zhuǎn)換規(guī)則如下:double floatlong unsigned int char, short低低 高高 六、數(shù)據(jù)類型轉(zhuǎn)換當(dāng)一個算術(shù)運算符兩端的運算量不一致時,按“向高看齊”的原則,對較低的類型進行提升。如:char ch; int i , result ; f

22、loat f; double d; result = ch / i + f * d ( f + i )doubledoubledoubledoubleintdoubleintdoubledoubleintdouble六、數(shù)據(jù)類型轉(zhuǎn)換2、賦值轉(zhuǎn)換C語言允許通過賦值使賦值號右邊表達式值的類型轉(zhuǎn)換為其左邊變量的類型。如上圖1中,右邊表達式的值為double類型,但經(jīng)過賦值運算卻轉(zhuǎn)換為int類型。即result中的最終結(jié)果為一個整數(shù)。 即:賦值轉(zhuǎn)換具有強制性,賦值號右邊的表達式要強制轉(zhuǎn)換成左邊變量的形式。 又如:int a; a=5.8; printf(“%d”, a ); 則輸出5。六、數(shù)據(jù)類型轉(zhuǎn)換

23、3、不同類型數(shù)據(jù)的顯式轉(zhuǎn)換在C語言中,有一種“強制類型轉(zhuǎn)換運算符”,它能將某以類型的變量強制轉(zhuǎn)換為另一種類型,它的一般形式為: (類型標識符)表達式如:printf ( “ %c ”, (char)(67-1.2); 會輸出A。如:float x=4.5; int i; i=(int)x; printf(“%d %f “, i, x); 則會輸出4 4.5000 即:x的值仍為4.5,i的值為x值的整數(shù)部分。又如: (int)(x+y) 不能寫為 int(x+y) 六、數(shù)據(jù)類型轉(zhuǎn)換4、輸出轉(zhuǎn)換在輸出語句中,也會發(fā)生隱式轉(zhuǎn)換。如:float f=5.8; printf(“%d”, f ); 則輸

24、出5。如果是int a=5.8; printf(“%f”, a); 在編譯時不用出錯,但不會輸出結(jié)果。再如:int i = - - 1; printf(“%u”, i ); 則會輸出()。1的原碼:000000000000001,補碼為:111 1111 1111 1111 存儲形式為16個1。故當(dāng)作為無符號數(shù)輸出時,應(yīng)輸出65535(216-1)。鞏固練習(xí)1、變量a是int 類型,并執(zhí)行了語句:a=A+1.6; 則正確的敘述是()A)a的值是字符C B)不允許字符型和浮點型相加 C)a的值是浮點型 D)a的值是字符A的ASCII碼加上1。2、設(shè)a、b均為double型變量,且a=5.5;b=

25、2.5,則表達式(int)a+b/b的值是()A)6.500000 B)6 C)5.500000 D)6.0000003、已知int m=3,n=4, x; 則x= -m+; x=x+8/+m; 后,x=( ),m( )。-25七、關(guān)系運算符和關(guān)系表達式七、關(guān)系運算符和關(guān)系表達式關(guān)系運算符:關(guān)系運算符作用優(yōu)先級運算對象運算結(jié)果結(jié)合性大于1整型實型或字符型關(guān)系成立則為真,結(jié)果為1關(guān)系不成立則為假,結(jié)果為0自左向右=大于等于3-1 等價于:a=(1+2)(3-1) 關(guān)系成立,a的值為1。又如:2= =3 表達式值為0, 10!9 表達式值為1,2=3 表達式值為0。又如:23=5 等價于 2(3

26、=5) 表達式值為0。又如:z=3+1=2+31=5+6*2 先做算術(shù)運算(先乘除取余,后加減,相同級別的從左向右做):z=3+1=2+3-1=5+12 z=4=4、=、 算術(shù)運算符 關(guān)系運算符 邏輯與(&) 邏輯非(|) 賦值運算符。4 4、注意:、注意:若&的第一個操作數(shù)為0,則第二個操作數(shù)不再計算;若|的第一個操作符為非0,則第二個操作數(shù)不再計算。如例3。 如:5&2 3&0 0&0 1&5 1&0 0& . .2 5 | 2 3 | 0 0 | 0 1 | 5 1 | 0 0 | . .2! !5 ! !0 ! !1 !

27、. ! .5八、邏輯運算和邏輯表達式八、邏輯運算和邏輯表達式例1:已有定義:int x=3, y=4, z=5; 則表達式 !(x+y)+z-1&y+z/2 的值是() A)6 B)0 C)2 D)1例2、語句printf(“%d”, (a=4) & (b=-3) )的輸出結(jié)果是()【注】例3、設(shè)x, y, z 均為int型變量,則執(zhí)行語句x=y=3;t=+x | +y 后,y的值為()【注】例4、10 x100 或x10 & x=100)| (xb)&(n=cd)運算后,n的值為()A)0 B)1 C)2 D)31221xy(x*x+y*y=1 & x

28、*x+y*y=4) = 11八、邏輯運算和邏輯表達式八、邏輯運算和邏輯表達式練3、若變量c為char類型,能判斷出c為小寫字母的表達式是()A)a=c=z B)a=c=a ) | (c=a) & (cbc); printf(“%d”, d ) ; 練5、設(shè)y是int 型變量,寫出判斷y 為奇數(shù)的關(guān)系表達式()。練6、若已知a=10, b=20, 則表達式!ab的值是()練7、若x和y代表整型數(shù),寫出表示數(shù)學(xué)關(guān)系 |x-y| 0&(x-y)2 | (x-y)-2九、逗號運算符和逗號表達式C語言提供一種特殊的運算符逗號運算符。用它將兩個表達式連接起來,稱為逗號表達式。逗號運算符又稱

29、為順序求值運算符。逗號表達式的一般形式為: 表達式1,表達式21、逗號表達式的求解過程為:先求解表達式1,再求解表達式2。結(jié)合性自左向右。2、整個逗號表達式的值是表達式2的值。3、逗號運算符的優(yōu)先級是所有運算符中最低的。 如:a=(3+5,6+8); 則a的值為14。 又如:a=3*5, a*4 先求a=3*5, 再求a*4, 故整個逗號表達式的值為:60。4、逗號表達式可擴展為:表達式1,表達式2,表達式3,表達式n它的運算規(guī)則為依次求解表達式1到表達式n的值,整個表達式的值為表達式n的值。如(a=3*5,a+10),a/5,a*2的值為30九、逗號運算符和逗號表達式例1、假定x和y為double類型,則表達式x=2,y=x+3/2的值是()A)3.500000 B)3 C)2.000000 D)3.000000例2、若已定義x,y為int 類型,則表達式:x=2, y=x+3/2.0的值是()B十、條件運算符和條件表達式又叫問號運算符與問號表達式條件運算符有三個操作對象,稱三目(元)運算符,條件表達式的一般形式為:表達式1?表達式2:表達式3說明:1、條件運算符的求解順序是:2、條件運算符的值比關(guān)系運算和算術(shù)運算都低,但高于賦值運

溫馨提示

  • 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

提交評論