C語言課件-數據類型、運算符和表達式.ppt
《C語言課件-數據類型、運算符和表達式.ppt》由會員分享,可在線閱讀,更多相關《C語言課件-數據類型、運算符和表達式.ppt(81頁珍藏版)》請在裝配圖網上搜索。
,第三章,數據類型、運算符與表達式,,本章要點,數據的描述規(guī)則數據的操作規(guī)則,,主要內容,3.1C的數據類型3.2常量與變量3.3整型數據3.4浮點型數據運行3.5字符型數據,,主要內容,3.6變量賦初值3.7各類數值型數據間的混合運算3.8算術運算符和算術表達式3.9賦值運算符和賦值表達式3.10逗號運算符和逗號表達式,3.1C的數據類型,C語言提供了以下一些數據類型。,數據類型,構造類型,指針類型,空類型(無值類型)void,,3.2常量與變量,3.2.1常量和符號常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:,,整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a’,‘b’,‘2’字符串‘a’,‘ab’,‘1232’,例3.1符號常量的使用#definePRICE30#includevoidmain(){intnum,total;num=10;total=num*PRICE;printf(″total=%d\n″,total);},符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內不能改變,也不能再被賦值。,運行結果:total=300,說明:程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現的PRICE都代表30,可以和常量一樣進行運算,說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦值,3.2常量與變量,3.2.2變量變量代表內存中具有特定屬性的一個存儲單元,它用來存放數據,這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。,,3.2常量與變量,變量命名的規(guī)定:C語言規(guī)定標識符只能由字母、數字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b,?,?,3.2常量與變量,注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標識符時,應注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。,3.3整型數據,3.3.1整型常量的表示方法整型常量即整常數。在C語言中,整常數可用以下三種形式表示:(1)十進制整數。如:123,-456.4。(2)八進制整數。以0頭的數是八進制數。如:0123表示八進制數123,等于十進制數83,-011表示八進制數-11,即十進制數-9。,(3)十六進制整數。以0 x開頭的數是16進制數。如:0 x123,代表16進制數123,等于十進制數291。-0 x12等于十進制數-10。,3.3整型數據,3.3.2整型變量(1)整型數據在內存中的存放形式數據在內存中是以二進制形式存放的。如:inti;/*定義為整型變量*/i=10;/*給i賦以整數10*/,3.3整型數據,注意:十進制數10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數據分配的字節(jié)數是不相同的,VC++6.0則分配4個字節(jié))。數值是以補碼(complement)表示的。,3.3整型數據,(2)整型變量的分類,共六種,,有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型,(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int),注意:括號表示其中的內容是可選的。,3.3整型數據,整數類型的有關數據:,,,,,,,,類型類型說明符長度數的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1),,3.3整型數據,例如:整數13在內存中實際存放的情況:,3.3整型數據,(3)整型變量的定義:C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。例如:inta,b(指定變量a、b為整型)unsignedshortc,d;(指定變量c、d為無符號短整型)longe,f;(指定變量e、f為長整型),例3.2整型變量的定義與使用#includevoidmain(){inta,b,c,d;/*指定a、b、c、d為整型變量*/unsignedu;/*指定u為無符號整型變量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf(″a+u=%d,b+u=%d\n″,c,d);},說明:可以看到不同種類的整型數據可以進行算術運算,運行結果:a+u=22,b+u=-14,例3.3整型數據的溢出#includevoidmain(){inta,b;a=32767;b=a+1;printf(“%d,%d\n”,a,b);},說明:數值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內的數,無法表示大于32767或小于-32768的數。遇此情況就發(fā)生“溢出”。,運行結果:32767,-32768,3.3整型數據,3.3.3整型常量的類型(1)一個整數,如果其值在-32768~+32767范圍內,認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數,如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內,則認為它是為長整型??梢詫⑺x值給一個longint型變量。,3.3整型數據,(3)如果所用的C版本(如TurboC)分配給shortint與int型數據在內存中占據的長度相同,則它的表數范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。,3.3整型數據,(4)一個整常量后面加一個字母u或U,認為是unsignedint型,如12345u,在內存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數據)。如果寫成-12345u,則先將-12345轉換成其補碼53191,然后按無符號數存儲。,3.3整型數據,(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。例如:123l.432L.0L用于函數調用中。如果函數的形參為longint型,則要求實參也為longint型。,3.4浮點型數據,3.4.1浮點型常量的表示方法,兩種表示形式,,小數指數,0.1233e-3,注意:字母e(或E)之前必須有數字,且e后面的指數必須為整數:,1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e,?,?,3.4浮點型數據,規(guī)范化的指數形式:在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字。例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數形式”。新書:0.123456e3稱為“規(guī)范化的指數形式”,3.4浮點型數據,3.4.2浮點型變量(1)浮點型數據在內存中的存放形式一個浮點型數據一般在內存中占4個字節(jié)(32位)。與整型數據的存儲方式不同,浮點型數據是按照指數形式存儲的。系統(tǒng)把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分采用規(guī)范化的指數形式。,3.4浮點型數據,(2)浮點型變量的分類浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。,,例3.4浮點型數據的舍入誤差#includevoidmain(){floata,b;a=123456.789e5;b=a+20;printf(“%f\n”,b);},說明:一個浮點型變量只能保證的有效數字是7位有效數字,后面的數字是無意義的,并不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數,運行結果:123456.789e5,3.4浮點型數據,3.4.3浮點型常量的類型C編譯系統(tǒng)將浮點型常量作為雙精度來處理。例如:f=2.45678*4523.65系統(tǒng)先把2.45678和4523.65作為雙精度數,然后進行相乘的運算,得到的乘也是一個雙精度數。最后取其前7位賦給浮點型變量f。如是在數的后面加字母f或F(如1.65f,654.87F),這樣編譯系統(tǒng)就會把它們按單精度(32位)處理。,3.5字符型數據,3.5.1字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符,例,‘a’,’A’,‘1’‘abc’、“a”,,,?,3.5字符型數據,,有些以“\”開頭的特殊字符稱為轉義字符,\n換行,將當前位置移到下一行開頭\t橫向跳格(跳到下一個Tab位置)\b退格,將當前位置移到前一列\(zhòng)r回車,將當前位置移到本行開頭\\反斜杠\\dddddd表示1到3位八進制數字\xhhhh表示1到2位十六進制數字,例3.5轉義字符的使用#includevoidmain(){printf(″abc\tde\rf\tg\n″);printf(″h\ti\b\bjk\n″);},打印機上的顯示結果:fabcgdehjik,顯示屏上的運行結果:fgdehjk,3.5字符型數據,3.5.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數中可以用下面語句對c1,c2賦值:c1=‘a’;c2=‘b’;一個字符變量在內存中占一個字節(jié)。,3.5字符型數據,3.5.3字符數據在內存中的存儲形式及其使用方法將一個字符常量放到一個字符變量中,實際上并不是把該字符本身放到內存單元中去,而是將該字符的相應的ASCII代碼放到存儲單元中。,這樣使字符型數據和整型數據之間可以通用。一個字符數據既可以以字符形式輸出,也可以以整數形式輸出。,c1,97,c2,98,c1,0110001,c2,01100010,a,0,1,1,0,0,0,0,1,“%c”——a,“%d”——97,例3.6向字符變量賦以整數。#includevoidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);},說明:在第3和第4行中,將整數97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句:c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98,運行結果:ab9798,例3.7大小寫字母的轉換#includevoidmain(){charc1,c2;c1=’a’;c2=’b’;c1=c1-32;c2=c2-32;printf(“%c%c″,c1,c2);},說明:程序的作用是將兩個小寫字母a和b轉換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。C語言允許字符數據與整數直接進行算術運算。,運行結果:AB,3.5字符型數據,說明:有些系統(tǒng)(如TurboC)將字符變量定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值范圍是-128~127。如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數。如果在字符變量中存放一個ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負整數。,3.5字符型數據,3.5.4字符串常量字符串常量是一對雙撇號括起來的字符序列合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);,3.5字符型數據,‘a’是字符常量,”a”是字符串常量,二者不同。如:假設C被指定為字符變量:charc,c=’a’;c=”a”;c=”CHINA”;,?,?,結論:不能把一個字符串常量賦給一個字符變量。,C規(guī)定:在每一個字符串常量的結尾加一個“字符串結束標志”,以便系統(tǒng)據此判斷字符串是否結束。C規(guī)定以字符’\0’作為字符串結束標志。,如:如果有一個字符串常量”CHINA”,實際上在內存中是:,它占內存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。,3.5字符型數據,\0ASCII碼為0的字符空操作字符,3.6變量賦初值,字符串常量(1)C語言允許在定義變量的同時使變量初始化。如:inta=3;//指定a為整型變量,初值為3floatf=3.56;//指定f為浮點型變量,初值為3.56charc=‘a’;//指定c為字符變量,初值為‘a’,3.6變量賦初值,(2)可以使被定義的變量的一部分賦初值。如:inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5(3)如果對幾個變量賦以同一個初值,應寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶inta=b=c3;,注意:初始化不是在編譯階段完成的而是在程序運行時執(zhí)行本函數時賦初值的,相當于有一個賦值語句。,3.7各類數值型數據間的混合運算,整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然后進行運算。,上述的類型轉換是由系統(tǒng)自動進行的,,低,高,DoublefloatLongUnsignedIntchar,short,,,,,,3.8算術運算符和算術表達式,3.8.1C運算符簡介C的運算符有以下幾類:(1)算術運算符(+-*/%)(2)關系運算符(><==>=<=?。剑?3)邏輯運算符(!&&||)(4)位運算符(>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,),3.8算術運算符和算術表達式,(8)指針運算符(*和&)(9)求字節(jié)數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符()),3.8算術運算符和算術表達式,3.8.2算術運算符和算術表達式(1)基本的算術運算符:+(加法運算符,或正值運算符,如:3+5、+3)-(減法運算符,或負值運算符,如:5-2、-3)*(乘法運算符,如:3*5)/(除法運算符,如:5/3)%(模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。,3.8算術運算符和算術表達式,(2)算術表達式和運算符的優(yōu)先級與結合性基本的算術運算符:用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C語法規(guī)則的式子,稱為C算術表達式。運算對象包括常量、變量、函數等。例如:a*b/c-1.5+′a′是一個合法的表達式。,C語言規(guī)定了運算符的優(yōu)先級和結合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。C規(guī)定了各種運算符的結合方向(結合性)算術運算符的結合方向為“自左至右”,即先左后右。,3.8算術運算符和算術表達式,3.8算術運算符和算術表達式,(3)強制類型轉換運算符可以利用強制類型轉換運算符將一個表達式轉換成所需類型。一般形式:(類型名)(表達式)例如:(double)a將a轉換成double類型(int)(x+y)將x+y的值轉換成整型(float)(5%3)將5%3的值轉換成float型,例3.8強制類型轉換。#includevoidmain(){floatx;inti;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);},說明:有兩種類型轉換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉換,如3+6.5。第二種是強制類型轉換。當自動類型轉換不能實現目的時,可以用強制類型轉換。,運行結果:x=3.600000,i=3,3.8算術運算符和算術表達式,(4)自增、自減運算符作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1),3.8算術運算符和算術表達式,i++與++i的區(qū)別:++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?3.8算術運算符和算術表達式,注意:(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,(2)++和--的結合方向是“自右至左”。,自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址,3.8算術運算符和算術表達式,(5)有關表達式使用中的問題說明①ANSIC并沒有具體規(guī)定表達式中的子表達式的求值順序,允許各編譯系統(tǒng)自己安排。例如:對表達式a=f1()+f2()并不是所有的編譯系統(tǒng)都先調用f1(),然后調用f2()。在有的情況下結果可能不同。有時會出現一些令人容易搞混的問題,因此務必要小心謹慎。,3.8算術運算符和算術表達式,②C語言中有的運算符為一個字符,有的運算符由兩個字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應寫成(i++)+j的形式,3.8算術運算符和算術表達式,③在調用函數時,實參數的求值順序,C標準并無統(tǒng)一規(guī)定。例如:i的初值為3,如果有下面的函數調用:printf(″%d,%d″,i,i++)在有的系統(tǒng)中,從左至右求值,輸出“3,3”。在多數系統(tǒng)中對函數參數的求值順序是自右而左,printf函數輸出的是“4,3”。以上這種寫法不宜提倡,最好改寫成j=i++;printf("%d,%d",j,i),不要寫出別人看不懂的也不知道系統(tǒng)會怎樣執(zhí)行程序,3.9賦值運算符和賦值表達式,(1)賦值運算符賦值符號“=”就是賦值運算符,它的作用是將一個數據賦給一個變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱賦值運算)。把常量3賦給變量a。也可以將一個表達式的值賦給一個變量。,3.9賦值運算符和賦值表達式,(2)類型轉換如果賦值運算符兩側的類型不一致,但都是數值型或字符型時,在賦值時要進行類型轉換。①將浮點型數據(包括單、雙精度)賦給整型變量時,舍棄浮點數的小數部分。如:i為整型變量,執(zhí)行“i=3.56”的結果是使i的值為3,以整數形式存儲在整型變量中。,3.9賦值運算符和賦值表達式,②將整型數據賦給單、雙精度變量時,數值不變,但以浮點數形式存儲到變量中。如:將23賦給float變量f,即執(zhí)行f=23,先將23轉換成23.00000,再存儲在f中。將23賦給double型變量d,即執(zhí)行d=23,則將23補足有效位數字為23.00000000000000,然后以雙精度浮點數形式存儲到變量d中。,3.9賦值運算符和賦值表達式,③將一個double型數據賦給float變量時,截取其前面7位有效數字,存放到float變量的存儲單元(4個字節(jié))中。但應注意數值范圍不能溢出。如:floatf;doubled=123.456789e100;f=d;就出現溢出的錯誤。如果將一個float型數據賦給double變量時,數值不變,有效位數擴展到16位,在內存中以8個字節(jié)存儲,3.9賦值運算符和賦值表達式,第二種情況:如果所用系統(tǒng)(如TurboC++)將字符處理為帶符號的(即signedchar),若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位全補1。這稱為“符號擴展”,這樣做的目的是使數值保持不變,如變量c(字符‘\376’)以整數形式輸出為-2,i的值也是-2。,3.9賦值運算符和賦值表達式,⑤將一個int、short、long型數據賦給一個char型變量時,只將其低8位原封不動地送到char型變量(即截斷)。例如:inti=289;charc=′a′;c=i;賦值情況:,c的值為33,如果用“%c”輸出c,將得到字符“!”(其ASCII碼為33)。,3.9賦值運算符和賦值表達式,將帶符號的整型數據(int型)賦給long型變量時,要進行符號擴展,將整型數的16位送到long型低16位中:如果int型數據為正值(符號位為0),則long型變量的高16位補0;如果int型變量為負值(符號位為1),則long型變量的高16位補1,以保持數值不改變。反之,若將一個long型數據賦給一個int型變量,只將long型數據中低16位原封不動地送到整型變量(即截斷)。,3.9賦值運算符和賦值表達式,例如:inta;longb=8;a=b賦值情況如圖:,如果b=65536(八進制數0200000),則賦值后a值為0。見圖3.14,3.9賦值運算符和賦值表達式,⑦將unsignedint型數據賦給longint型變量時,不存在符號擴展問題,只需將高位補0即可。將一個unsigned類型數據賦給一個占字節(jié)數相同的非unsigned型整型變量(例如:unsignedint->int,unsignedlong->long,unsignedshort->short),將unsigned型變量的內容原樣送到非unsigned型變量中,但如果數據范圍超過相應整型的范圍,則會出現數據錯誤。,3.9賦值運算符和賦值表達式,例如:unsignedinta=65535;intb;b=a;,將a整個送到b中,由于b是int,第1位是符號位,因此b成了負數。根據補碼知識可知,b的值為-1,可以用printf(″%d″,b);來驗證。,⑧將非unsigned型數據賦給長度相同的unsigned型變量,也是原樣照賦(連原有的符號位也作為數值一起傳送)。,例3.9有符號數據傳送給無符號變量。#includevoidmain(){unsigneda;intb=-1;a=b;printf(″%u\n″,a);},說明:“%u”是輸出無符號數時所用的格式符。如果b為正值,且在0~32767之間,則賦值后數值不變。賦值情況見圖,運行結果:65535,3.9賦值運算符和賦值表達式,(3)復合的賦值運算符在賦值符“=”之前加上其他運算符,可以構成復合的運算符。例如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3,以“a+=3”為例來說明,它相當于使a進行一次自加(3)的操作。即先使a加3,再賦給a。,3.9賦值運算符和賦值表達式,為便于記憶,可以這樣理解:①a+=b(其中a為變量,b為表達式)②a+=b(將有下劃線的“a+”移到“=”右側)|___↑③a=a+b(在“=”左側補上變量名a),3.9賦值運算符和賦值表達式,注意:如果b是包含若干項的表達式,則相當于它有括號。如:①x%=y+3②x%=(y+3)|__↑③x=x%(y+3)(不要錯寫成x=x%y+3),凡是二元(二目)運算符,都可以與賦值符一起組合成復合賦值符。,C語言規(guī)定可以使用10種復合賦值運算符:+=,-=,*=,/=,%=,>=,&=,∧=,|=,3.9賦值運算符和賦值表達式,(4)賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。一般形式為:例如:“a=5”是一個賦值表達式,3.9賦值運算符和賦值表達式,對賦值表達式求解的過程是:①求賦值運算符右側的“表達式”的值;②賦給賦值運算符左側的變量。例如:賦值表達式“a=3*5”的值為15,執(zhí)行表達式后,變量a的值也是15。,注意:一個表達式應該有一個值,3.9賦值運算符和賦值表達式,左值(lvalue):賦值運算符左側的標識符變量可以作為左值;而表達式就不能作為左值(如a+b);常變量也不能作為左值。,右值(lvalue):出現在賦值運算符右側的表達式左值也可以出現在賦值運算符右側,因而左值都可以作為右值。,3.9賦值運算符和賦值表達式,賦值表達式中的“表達式”,又可以是一個賦值表達式。例如:a=(b=5),分析:括弧內的“b=5”是一個賦值表達式,它的值等于5。執(zhí)行表達式“a=(b=5)”相當于執(zhí)行“b=5”和“a=b”兩個賦值表達式。賦值運算符按照“自右而左”的結合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價。,3.9賦值運算符和賦值表達式,請分析下面的賦值表達式∶(a=3*5)=4*3,分析:先執(zhí)行括弧內的運算,將15賦給a,然后執(zhí)行4*3的運算,得12,再把12賦給a。最后a的值為12,整個表達式的值為12??梢钥吹健?a=3*5)出現在賦值運算符的左側,因此賦值表達式(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.9賦值運算符和賦值表達式,賦值表達式也可以包含復合的賦值運算符。如:a+=a-=a*a,分析:此賦值表達式的求解步驟如下∶①先進行“a-=a*a”的運算,它相當于a=a-a*a,a的值為12-144=-132。②再進行“a+=-132”的運算,相當于a=a+(-132),a的值為-132-132=-264。,3.9賦值運算符和賦值表達式,將賦值表達式作為表達式的一種,使賦值操作不僅可以出現在賦值語句中,而且可以以表達式形式出現在其他語句(如輸出語句、循環(huán)語句等)中。如:printf("%d",a=b);,分析:如果b的值為3,則輸出a的值(也是表達式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。,3.10逗號運算符和逗號表達式,逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”如:3+5,6+8,一般形式:表達式1,表達式2,求解過程:先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。,逗號表達式的值為14,3.10逗號運算符和逗號表達式,例:逗號表達式a=3*5,a*4,分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應先求解a=3*5。,a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。,一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(a=3*5,a*4)a+5先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。,3.10逗號運算符和逗號表達式,逗號表達式的一般形式可以擴展為表達式1,表達式2,表達式3,……,表達式n它的值為表達式n的值。,逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*3,賦值表達式,將一個逗號表達式的值賦給x,x的值等于18,逗號表達式,包括一個賦值表達式和一個算術表達式,x的值為3,整個逗號表達式的值為18。,3.10逗號運算符和逗號表達式,注意:并不是任何地方出現的逗號都是作為逗號運算符。例如函數參數也是用逗號來間隔的。如:printf(“%d,%d,%d”,a,b,c);,“a,b,c”并不是一個逗號表達式,它是printf函數的3個參數,printf(“%d,%d,%d”,(a,b,c),b,c),“(a,b,c)”是一個逗號表達式,它的值等于c的值。,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 語言 課件 數據類型 運算 表達式
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.jqnhouse.com/p-11495482.html