C語言數(shù)據(jù)類型、運算符和表達式.ppt
《C語言數(shù)據(jù)類型、運算符和表達式.ppt》由會員分享,可在線閱讀,更多相關(guān)《C語言數(shù)據(jù)類型、運算符和表達式.ppt(92頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第3章C語言數(shù)據(jù)類型、運算符和表達式,本章要點:數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則,教學要求:,1.掌握C語言數(shù)據(jù)類型分類。2.掌握整型數(shù)據(jù)、實型數(shù)據(jù)、字符數(shù)據(jù)使用規(guī)則。3.掌握C語言常量、變量的使用。,內(nèi)容提要:,3.1基本字符、標識符和關(guān)鍵字3.2基本數(shù)據(jù)類型3.3常量與變量3.4整型數(shù)據(jù)3.5實型數(shù)據(jù)3.6字符型數(shù)據(jù),內(nèi)容提要:,3.7變量賦初值3.8各類數(shù)值型數(shù)據(jù)間的混合運算3.9運算符和算術(shù)表達式,3.1基本字符、標識符和關(guān)鍵字,一、符號集(字符集)C語言的基本符號共有以下五種:(1)大寫字母AZ(2)小寫字母az(3)阿拉伯數(shù)字09(4)下劃線_(5)標點符號和運算符,二、標識符,標識符號常量、變量、函數(shù)、類型名、文件等的有效字符序列。標識符構(gòu)成規(guī)則:(1)標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:xy3_imaxECSEXA_to_B(合法)7xint#Nobadonereg-input(不合法)(2)在C語言中,大小寫字母不等效。a和A,I和i,Sum和sum,分別是兩個不同的標識符。(3)用戶自定義的標識符不能與保留字(關(guān)鍵字)同名。,三、關(guān)鍵字(保留字),概念:就是具有特定含義的標識符,用戶不能用來作自定義標識符。C語言中的關(guān)鍵字較少,由ANSI標準推薦的關(guān)鍵字有32個。(1)與數(shù)據(jù)類型有關(guān)的(14個):charintfloatdoublesignedunsignedshortlongvoidstructuniontypedefenumsizeof(2)與存儲類別有關(guān)的:autoexternregisterstatic,三、關(guān)鍵字(續(xù)),(3)與程序控制結(jié)構(gòu)有關(guān)的(12):dowhileforifelseswitchcasedefaultgotocontinuebreakreturn注意:所有的關(guān)鍵字都有固定的意義,不能用作其它所有關(guān)鍵字都必須小寫。如else與ELSE表示不同的含義,3.2C的數(shù)據(jù)類型,C語言提供了以下一些數(shù)據(jù)類型,數(shù)據(jù)類型,構(gòu)造類型,指針類型,空類型(無值類型)void,3.3常量與變量,3.3.1常量和符號常量1、常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:,整型100,125,-100,0實型3.14,0.125,-3.789字符型a,b,2字符串a(chǎn),ab,1232,2、符號常量,用一個標識符代表一個常量定義方法define標識符常量,例3.1符號常量的使用#definePI3.14159#includevoidmain()intr;floats;scanf(%d,說明:程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14159,可以和常量一樣進行運算。,符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。,運行結(jié)果:2area=12.566360,說明:如再用賦值語句給PRICE賦值是錯的PI=3.14;/*錯誤,不能給符號常量賦值,3.3常量與變量,3.3.2變量概念:在程序運行期間,其值是可以改變的量。用標識符(變量名)來表示。變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值。從變量中取值,實際上是通過變量名找到相應的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。變量的定義方法:類型符標識符,3.3常量與變量(續(xù)),變量命名的規(guī)定:語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:sum,_total,month,Student_name,lotus_1_2_,BASIC,li_lingM.D.John,¥123,3D64,ab,3.3常量與變量(續(xù)),注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。見名知意。先定義,后使用。習慣上,符號常量用名用大寫,變量名用小寫,以示區(qū)別。,3.4整型數(shù)據(jù),一、整型常量的表示方法整型常量即整常數(shù)。在語言中,整常數(shù)可用以下三種形式表示:(1)十進制整數(shù)。如:123,-456,4。(2)八進制整數(shù)。最高位必須用0作引導符。如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。,3.4整型數(shù)據(jù)(續(xù)),(3)十六進制整數(shù)。以0 x(0X)開頭的數(shù)是16進制數(shù)。如:0 x123,代表16進制數(shù)123,等于十進制數(shù)291。-0 x12等于十進制數(shù)10。,二、整型變量(1)整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/,3.4整型數(shù)據(jù)(續(xù)),注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC+3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC+6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。,3.4整型數(shù)據(jù)(續(xù)),(2)整型變量的分類,共六種,有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型,(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int),注意:括號表示其中的內(nèi)容是可選的.,3.4整型數(shù)據(jù)(續(xù)),整數(shù)類型的有關(guān)數(shù)據(jù):,類型類型說明符長度數(shù)的范圍基本型int2字節(jié)-3276832767短整型short2字節(jié)-215215-1長整型long4字節(jié)-231231-1無符號整型unsigned2字節(jié)065535無符號短整型unsignedshort2字節(jié)065535無符號長整型unsignedlong4字節(jié)0(232-1),3.4整型數(shù)據(jù)(續(xù)),例如:整數(shù)13在內(nèi)存中實際存放的情況:,3.4整型數(shù)據(jù)(續(xù)),(3)整型變量的定義和使用規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。定義的一般形式:類型說明符變量名1,變量名2,;例如:inta,b;/*指定變量、為整型*/unsignedshortc,d;/*指定變量、為無符號短整型*/longe,f;/*指定變量、為長整型*/,變量的定義和使用,注意:(1)允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號隔開;類型說明符與變量名之間至少用一個空格間隔。(2)最后一個變量名之后必須以“;”號結(jié)尾。(3)變量定義必須放在變量使用之前。,3.4整型數(shù)據(jù)(續(xù)),【例】整型變量的定義與使用。#includevoidmain()inta,b,c;printf(”Pleaseinputtwonumbers:”);scanf(”%d,%d”,例:整型變量的定義與使用#includevoidmain()inta,b,c,d;/*指定、為整型變量*unsigned;*指定為無符號整型變量*12;-24;10;printf(,);,說明:可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算。,運行結(jié)果:,,例:整型數(shù)據(jù)的溢出#includevoidmain()inta,b;a=32767;b=a+1;printf(“%d,%dn”,a,b);,說明:數(shù)值是以補碼表示的。一個整型變量只能容納-3276832767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。,運行結(jié)果:32767,-32768,3.4整型數(shù)據(jù)(續(xù)),三、整型常量的類型(1)一個整數(shù),如果其值在-32768+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637+2147483647范圍內(nèi),則認為它是為長整型??梢詫⑺x值給一個longint型變量。,3.4整型數(shù)據(jù)(續(xù)),(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。,3.4整型數(shù)據(jù)(續(xù)),(4)一個整常量后面加一個字母u或U,認為是unsignedint型。如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。,3.5浮點型數(shù)據(jù)(實型數(shù)據(jù)),3.5.1實型常量的表示方法,兩種表示形式,小數(shù)指數(shù),0.1233e-3,注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e,實型二種表現(xiàn)形式:,十進制形式:由數(shù)字和小數(shù)點組成;,指數(shù)形式:由“十進制小數(shù)”+“e(或E)”+“十進制數(shù)整數(shù)”三部分組成。,例如:3.44.3,例如:12.5e-6表示12.510-6,十進制小數(shù),e(或E),十進制整數(shù),注意:,小數(shù)點不能單獨出現(xiàn);,e或E的兩邊必須有數(shù),且其后面必須為整數(shù);,如:0.、.0應為:.,如:6E0.2e56E,3.5.2實型變量,實型變量的分類實型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。,說明:,C編譯系統(tǒng)通常把所有實型常數(shù)都被默認為double型。絕對值小于1的浮點數(shù),其小數(shù)點前面的零可以省略。TurboC默認格式輸出浮點數(shù),最多只保留小數(shù)點后6位。,3.5.3實型數(shù)據(jù)在內(nèi)存中的存放形式,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。,例3.4實型數(shù)據(jù)的舍入誤差#includevoidmain()floata,b;a=123456.789e5;b=a+20;printf(“%fn”,b);,說明:一個實型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。,運行結(jié)果:12345678848.000000,3.6字符型數(shù)據(jù),3.6.1字符常量用單引號包含的一個字符是字符型常量只能包含一個字符,例,a,A,1abc、“a”,字符型常量簡稱字符常量包括可視字符常量和轉(zhuǎn)義字符常量,1.可視字符,ASCII基本字符集中包括94個可視字符和34個控制字符,直接用單引號括起來即為字符常量。例如:,注意:(1)單引號不占存儲空間(2)C語言中,a和a不同(3)單引號括起的大寫字母和小寫字母代表不不同的字符常量。如:a和A(4)單引號括起也是字符常量,存儲的是空格的ASCII值32,2.轉(zhuǎn)義字符,ASCII中的控制字符是不可見字符,不能直接用單引號括起的形式表示。,n換行t橫向跳格r回車,在某些特定字符前加“”,表示某種特殊的意義或控制動作。稱這種形式的字符為轉(zhuǎn)義字符。,說明:(1)轉(zhuǎn)義字符代表一個字符,在內(nèi)存中只占一個字節(jié)的存儲空間。(2)轉(zhuǎn)義字符0,表示字符串常量結(jié)束的標志符(3)dddddd表示1到3位八進制數(shù)字(4)xhhhh表示1到2位十六進制數(shù)字,3.6字符型數(shù)據(jù),3.6.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1a;c2b;一個字符變量在內(nèi)存中占一個字節(jié)。,3.6字符型數(shù)據(jù),3.6.3字符數(shù)據(jù)在內(nèi)存中的存儲形式一個字符常量存放到一個字符變量中,是將該字符的相應的ASCII代碼放到存儲單元中。使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。,注意:一個字符數(shù)據(jù)既可以以字符形式輸出,也可以整數(shù)形式輸出。,例3.6向字符變量賦以整數(shù)。#includevoidmain()charc1,c2;c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);,說明:在第和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句:c1;c2;因為a和b的ASCII碼為97和98,運行結(jié)果:9798,例3.7大小寫字母的轉(zhuǎn)換#includevoidmain()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“cc,c1,c2);,說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。,運行結(jié)果:,3.6字符型數(shù)據(jù),說明:如果在字符變量中存放一個ASCII碼為0127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數(shù)。如果在字符變量中存放一個ASCII碼為128255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負整數(shù)。,3.6字符型數(shù)據(jù),3.6.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);,3.6字符型數(shù)據(jù),是字符常量,”是字符串常量,二者不同。如:假設c被指定為字符變量:charc,c=a;”a”;c”CHINA”;,結(jié)論:不能把一個字符串常量賦給一個字符變量。,規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。規(guī)定以字符作為字符串結(jié)束標志。,如:如果有一個字符串常量”,實際上在內(nèi)存中是:,它占內(nèi)存單元不是個字符,而是個字符,最后一個字符為。但在輸出時不輸出。,3.6字符型數(shù)據(jù),3.6字符型數(shù)據(jù),注意:字符串常量首尾的雙引號是界定符a和“a”所占存儲空間“123”和123不同,3.7變量賦初值,(1)語言允許在定義變量的同時使變量初始化如:inta=3;/指定為整型變量,初值為floatf=3.56;/指定為浮點型變量,初值為.56charc=a;/指定為字符變量,初值為a,3.7變量賦初值,(2)可以使被定義的變量的一部分賦初值。如:inta,b,c=5;表示指定、為整型變量,但只對初始化,c的初值為。(3)如果對幾個變量賦以同一個初值,應寫成:inta=3,b=3,c=3;表示、的初值都是。不能寫成inta=b=c=3;,注意:初始化不是在編譯階段完成的而是在程序運行時執(zhí)行本函數(shù)時賦初值的,相當于有一個賦值語句。,3.7各類數(shù)值型數(shù)據(jù)間的混合運算,混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算.,說明:這種類型轉(zhuǎn)換是由系統(tǒng)自動進行的。,總趨勢:存儲長度較短存儲長度較長,例:,intx=2;floaty=1.6;charc=A;,c+x*y=?,65(int),2(int),1.6(double),3.2(double),68.2(double),2、數(shù)據(jù)類型間的強制轉(zhuǎn)換,(要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達式),注意:,形式:,強制類型轉(zhuǎn)換時,得到所需類型的值,原來變量的類型和值都不變。,例:,inta=2,b=5;floatx=4.4;,(float)b/a,2.5,(int)x/a,2,例:(double)將轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型,2、數(shù)據(jù)類型間的強制轉(zhuǎn)換,注意:強制類型轉(zhuǎn)換形式中的表達式一定要用括號括起來。否則強制轉(zhuǎn)換僅對強制轉(zhuǎn)換運算符的變量進行類型轉(zhuǎn)換。例如:(int)(3.5+6.7)+8(int)3.5+8,3.8算術(shù)運算符和算術(shù)表達式,的運算符有以下幾類:(1)算術(shù)運算符(+-*/%)(2)關(guān)系運算符(!)(3)邏輯運算符(!|)(4)位運算符(|)(5)賦值運算符(及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)(8)指針運算符(*和),3.8.1算術(shù)運算符和算術(shù)表達式,1.基本的算術(shù)運算符:(加法運算符,或正值運算符。如:、)(減法運算符,或負值運算符。如:、)*(乘法運算符。如:*)(除法運算符。如:)(模運算符,或稱求余運算符,兩側(cè)均應為整型數(shù)據(jù),如:的值為)。,3.8.1算術(shù)運算符和算術(shù)表達式,2.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。例如:*.5a是一個合法的表達式,語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。規(guī)定了各種運算符的結(jié)合方向(結(jié)合性)算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右。,3.8.1算術(shù)運算符和算術(shù)表達式,3.8.1算術(shù)運算符和算術(shù)表達式,3.自增、自減運算符作用是使變量的值增或減如:,(在使用之前,先使的值加(減),(在使用之后,使的值加(減),3.8.1算術(shù)運算符和算術(shù)表達式,i+與+i的區(qū)別:是先執(zhí)行后,再使用的值;是先使用的值后,再執(zhí)行。例如:如果i的值為3;i的值先變成4,再賦給,j的值均為;先將i的值3賦給,的值為,然后變?yōu)?3.8.1算術(shù)運算符和算術(shù)表達式,注意:(1)自增運算符(),自減運算符(),只能用于變量,而不能用于常量或表達式,(2)和的結(jié)合方向是“自右至左”。,自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加。也用于指針變量,使指針指向下一個地址。,main()inta=5,b=6;inti,j,m,n;i=+a;j=-b;m=a+;n=b-;printf(“Thevaluesofiandjare:n”);printf(“i=%d,j=%dn”,i,j);printf(“Thevaluesofmandnare:n”);printf(“m=%d,n=%dn”,m,n);printf(“Thevaluesofaandbare:n”);printf(“a=%d,b=%dn”,a,b);,3.8.2賦值運算符和賦值表達式,1、賦值運算符,=(數(shù)學上的等號),功能:將一個表達式的值賦給一個變量。,例如:a=5;ave=(a+b)/10;,注意:與數(shù)學中的等式不同。,用法:變量=表達式,2、復合賦值運算符,*=、/=、%=、+=、-=、=、a+=a*=a;,a=8;,注意:如果是包含若干項的表達式,則相當于它有括號。如:x%=y+3x%=(y+3)|_x=x%(y+3)(不要錯寫成x=x%y+3),2、復合賦值運算符(續(xù)),3、賦值表達式,用賦值運算符將變量和表達式連接起來的式子,形式:=,求值規(guī)則:將“=”右邊表達式的值賦給左邊的變量。,結(jié)合性:自右至左,3、賦值表達式,對賦值表達式求解的過程是:求賦值運算符右側(cè)的“表達式”的值;賦給賦值運算符左側(cè)的變量。例如:賦值表達式“=3*5”的值為15,執(zhí)行表達式后,變量a的值也是15。,注意:一個表達式應該有一個值,3、賦值表達式,賦值表達式中的“表達式”,又可以是一個賦值表達式。例如:a=(b=5),分析:括弧內(nèi)的“b=5”是一個賦值表達式,它的值等于5。執(zhí)行表達式“a=(b=5)”相當于執(zhí)行“b=5”和“ab”兩個賦值表達式。賦值運算符按照“自右而左”的結(jié)合順序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價。,3、賦值表達式,請分析下面的賦值表達式(a=3*5)=4*3,分析:先執(zhí)行括弧內(nèi)的運算,將15賦給a,然后執(zhí)行4*3的運算,得12,再把12賦給a。最后a的值為12,整個表達式的值為12??梢钥吹?a=3*5)出現(xiàn)在賦值運算符的左側(cè),因此賦值表達式(a=3*5)是左值,注意:在對賦值表達式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時,實際上是將4*3的積12賦給變量a,而不是賦給3*5。,不能寫成:a=3*5=4*3,3、賦值表達式,賦值表達式也可以包含復合的賦值運算符。如:a+=a-=a*a,分析:此賦值表達式的求解步驟如下先進行“*”的運算,它相當于*,a的值為144132。再進行“”的運算,相當于=a+(-132),a的值為132-132-264。,4、賦值轉(zhuǎn)換,在賦值時,將賦值符右邊值的類型轉(zhuǎn)換成與其左邊變量類型一致的類型。,幾種情況:,(1)實型,整型(字符型),取整數(shù)部分,去掉小數(shù)部分,(2)整型、字符型,實型,補足有效位,floatf=23;23.00000(7位)doublef=A;65.00000000000000(16位),(3)對char、int、short、long、unsigned型數(shù)據(jù),賦值符右邊數(shù)據(jù)(a位),賦值符左邊變量(b位),a=b原樣照賦,ab截斷高a-b位,送低b位,ab,無符號數(shù)據(jù)或正數(shù),有符號數(shù)據(jù),高a-b位全補0,有符號變量,符號擴展,符號擴展,符號位為0,剩余的高位補0,符號位為1,剩余的高位補1,4、賦值轉(zhuǎn)換(續(xù)),例如:將一個int、short、long型數(shù)據(jù)賦給一個char型變量時,只將其低8位原封不動地送到char型變量(即截斷)。(“長”數(shù)據(jù)賦給“短”變量)例如:inti=289;charc=a;c=i;,c的值為33,如果用“%c”輸出c,將得到字符“!”!的ASCII碼為33。,賦值情況:,4、賦值轉(zhuǎn)換(續(xù)),例如:inta;longb65536;a=b;賦值情況如下:(“長”數(shù)據(jù)賦給“短”變量),結(jié)果:賦值后值為。,第一種情況:低位對應、高位補零(“短”數(shù)據(jù)賦給“長”變量)若所用系統(tǒng)將字符處理為unsignedchar型,則將字符的位放到int低位,高位補零。例如:將字符376賦給int型變量,第二種情況:符號擴展(“短”數(shù)據(jù)賦給“長”變量)若所用系統(tǒng)(如TurboC+)將字符處理為帶符號(signedchar)時,若字符最高位為,則整型變量高位補;若字符最高位為,則高位全補。這稱為“符號擴展”,這樣做的目的是使數(shù)值保持不變,如變量(字符376)以整數(shù)形式輸出為,的值也是。,將帶符號的整型數(shù)據(jù)(int型)賦給long型變量時,要進行符號擴展,將整型數(shù)的16位送到long型低16位中:(“短”數(shù)據(jù)賦給“長”變量)如果int型數(shù)據(jù)為正值(符號位為),則long型變量的高16位補;如果int型變量為負值(符號位為),則long型變量的高16位補,以保持數(shù)值不改變。反之,若將一個long型數(shù)據(jù)賦給一個int型變量,只將long型數(shù)據(jù)中低16位原封不動地送到整型變量(即截斷)。(“長”數(shù)據(jù)賦給“短”變量),4、賦值轉(zhuǎn)換(續(xù)),例:有符號數(shù)據(jù)傳送給無符號變量。#includevoidmain()unsigned;int;printf(n,);,說明:“%u”是輸出無符號數(shù)時所用的格式符。如果為正值,且在32767之間,則賦值后數(shù)值不變。,運行結(jié)果:,3.8.6逗號運算符和逗號表達式,逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”如:5,,一般形式:表達式,表達式,求解過程:先求解表達式,再求解表達式。整個逗號表達式的值是表達式的值。,逗號表達式的值為14,3.8.6逗號運算符和逗號表達式,例:逗號表達式*5,*,分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應先求解*5。,的值為5,然后求解*,得。整個逗號表達式的值為。,一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(*,*),a+5分析:先計算出的值等于,再進行*的運算得60(但值未變,仍為15),再進行得,即整個表達式的值為。,3.8.6逗號運算符和逗號表達式,逗號表達式的一般形式可以擴展為表達式,表達式,表達式,表達式它的值為表達式的值。,逗號運算符是所有運算符中級別最低的例:(,*),*3,賦值表達式,將一個逗號表達式的值賦給,的值等于,逗號表達式,包括一個賦值表達式和一個算術(shù)表達式,的值為,整個逗號表達式的值為18。,3.8.6逗號運算符和逗號表達式,注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如函數(shù)參數(shù)也是用逗號來間隔的。如:printf(“%d,%d,%d”,a,b,c);,“,”并不是一個逗號表達式,它是printf函數(shù)的3個參數(shù),printf(“%d,%d,%d”,(a,b,c),b,c),“(,)”是一個逗號表達式,它的值等于的值。,3.8.3關(guān)系運算符和關(guān)系表達式,關(guān)系運算:比較運算,比較兩個操作數(shù),看是否滿足給定的關(guān)系。,1)關(guān)系運算符,:小于,53,35,=:小于等于,53,35,=:大于等于,5=3,3=5,與數(shù)學上()不同,=:等于,5=3,與數(shù)學上(=)不同,!=:不等于,5!=3,與數(shù)學上()不同,C語言中,真:非0值;假:0值,2)關(guān)系表達式,用關(guān)系運算符將表達式連接起來的式子,優(yōu)先級,=,高低,=!=,結(jié)合方向:自左向右,表達式的值,關(guān)系成立,即為真,結(jié)果為1;,關(guān)系不成立,即為假,結(jié)果為0;,算術(shù)運算符,高低,例判斷下列關(guān)系表達式的結(jié)果:,(a2*2)2X(11)=28條件賦值,結(jié)合性:自右至左,例:,(1)intmax,a=5;b=3;max=ab?a:b,(2)-a=b+?a+:b+(3)y=x10?x/10:x0?x:-x;,結(jié)果:(1)max=5,a=5,b=3(2)表達式=4,a=4,b=5(3)若x=10,則y=10,3.8.7其他運算符及其運算,“,小結(jié):,基本數(shù)據(jù)類型運算符和表達式,小結(jié):,數(shù)據(jù)類型,構(gòu)造類型,指針類型,空類型(無值類型)void,作業(yè):,P42.2.1,2.2,2.3,2.5,2.6,2.7,2.8,2.10,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言 數(shù)據(jù)類型 運算 表達式
鏈接地址:http://appdesigncorp.com/p-11495353.html