版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第二章 基本數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,2,本章要求:C語(yǔ)言的數(shù)據(jù)類型各種類型數(shù)據(jù)的定義方法常量與變量各種類型數(shù)據(jù)的混合運(yùn)算強(qiáng)制類型變換重點(diǎn):數(shù)據(jù)類型;數(shù)據(jù)的定義方法;各種類型數(shù)據(jù)的混合運(yùn)算,3,2.1 C語(yǔ)言的數(shù)據(jù)類型,C語(yǔ)言支持的數(shù)據(jù)類型非常豐富,它包括:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類,4,2.2 常量、變量和標(biāo)識(shí)符,對(duì)于基本數(shù)據(jù)類型量,根據(jù)其取值是否可改變可分為常量和變量?jī)煞N。1.常量,常
2、量:其值不發(fā)生改變的量稱為常量。常量可與數(shù)據(jù)類型結(jié)合起來(lái)分類。例如,整型常量、實(shí)型常量、字符型常量、字符串常量和符號(hào)常量。在編程過(guò)程中,常量是可以不經(jīng)說(shuō)明而直接引用的,而變量則必須要先定義后使用。常用常量如下所示:整型常量:25、0、-7;實(shí)型常量:5.6、-6.9;字符常量:‘a(chǎn)’、‘b’。,5,2.標(biāo)識(shí)符,標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,稱之為符號(hào)常量
3、。符號(hào)常量在使用之前必須先定義,其一般形式為:#define 標(biāo)識(shí)符 常量其中#define也是一條預(yù)處理命令(預(yù)處理命令都以"#"開(kāi)頭),稱為宏定義命令其功能是把該標(biāo)識(shí)符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。一般習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫(xiě)字母,變量標(biāo)識(shí)符用小寫(xiě)字母,以示區(qū)別。,6,例2.1符號(hào)常量的使用。,,程序運(yùn)行結(jié)果: area=300程序分析:
4、 使用符號(hào)常量參與運(yùn)算,符號(hào)常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。使用符號(hào)常量的好處是:含意清楚;能做到“一改全改”。,7,3.變量,變量,其值可以改變的量稱為變量。一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。變量在使用之前必須進(jìn)行定義——即為每個(gè)變量取一個(gè)名稱(變量名),同時(shí)規(guī)定它的數(shù)據(jù)類型,以便編譯時(shí)根據(jù)數(shù)據(jù)類型分配存儲(chǔ)空間。C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須是
5、字母或者下劃線。下面標(biāo)識(shí)符的寫(xiě)法是合法的,可以作為變量名使用。Sum,Class_2,data,wang_ming,_high,a8,AREA,year_month_day下面是不合法的標(biāo)識(shí)符和變量名:*data1,99sum,%yuan,$BGss,MR.tom,a1>b1,s/t注意,編譯系統(tǒng)區(qū)分大小寫(xiě),將它們認(rèn)為是兩個(gè)不同的字符。所以,max和MAX是兩個(gè)不同的變量。,8,注意,建議變量名的長(zhǎng)度最好不要超過(guò)8個(gè)字符。
6、在選擇變量名和其它標(biāo)識(shí)符時(shí)應(yīng) “見(jiàn)名知意”。要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義,后使用” 。變量定義一般放在函數(shù)體的開(kāi)頭部分。要區(qū)分變量名和變量值是兩個(gè)不同的概念。,9,變量名實(shí)際上就是以一個(gè)名字對(duì)應(yīng),代表一個(gè)地址。在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。變量在定義時(shí)必須指定其數(shù)據(jù)類型,以便在編譯時(shí)為其分配存儲(chǔ)單元。,| &a? 2500H
7、|—————— 2501H|---- 1250 ----- a=1250 &b?2502H|—————— 2503H|---- ----- 2504H|---- 123.67 ----- b=123.67 2505H|---- ------ 2506H|—————— 變量名、變量值、變量地址間的關(guān)系
8、,例如: int a=1250; float b=123.67;,10,4.變量賦初值,C語(yǔ)言中可有多種方法為變量提供初值??梢栽谧兞慷x的同時(shí)給變量賦以初值的方法。這種方法稱為初始化。在變量定義中賦初值的一般形式為:類型說(shuō)明符 變量1= 值1,變量2= 值2,……;例如:int a=68;/*指定a為整型變量,初值為68*/也可以使被定義的變量的一部分賦初值。例如float b,c,d=7.9;上式指定
9、b,c,d為單精度實(shí)型變量,只對(duì)d初始化,其值為7.9。如果對(duì)幾個(gè)變量賦予相同的初值,應(yīng)寫(xiě)為:int e=50,f=50,g=50;,11,例2.2部分初始化數(shù)據(jù),程序運(yùn)行結(jié)果:a=6,b=14,c=8程序分析: 對(duì)定義的整型變量進(jìn)行部分初始化,然后參與運(yùn)算,并輸出結(jié)果。,,12,5.變量的地址,在定義了一個(gè)變量后,在內(nèi)存中會(huì)分配相應(yīng)的存儲(chǔ)單元,將變量的值存儲(chǔ)到該單元中。如前所述注意區(qū)分變量名和變量值這兩個(gè)不同的概念。
10、例如:int x; float y; x=3; y=3.14159;,13,2.3簡(jiǎn)單數(shù)據(jù)類型與表示范圍,2.3.1 整型數(shù)據(jù)1.整型常量的表示方法整型常量就是整常數(shù)。在C語(yǔ)言中,經(jīng)常使用的整常數(shù)有三種進(jìn)制,它們分別是八進(jìn)制、十六進(jìn)制和十進(jìn)制。 八進(jìn)制前綴為“0”,十六進(jìn)制前綴為“0x”,十進(jìn)制無(wú)前綴。 (1)十進(jìn)制整數(shù)。 如:123, -456
11、.4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。 如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。,14,(3)十六進(jìn)制整數(shù)。以0x開(kāi)頭的數(shù)是16進(jìn)制數(shù)。 如:0x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù) 291。 -0x12等于十進(jìn)制數(shù)-18。 (4)整型常數(shù)的后綴: 基本整型的長(zhǎng)度為16位,十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為0~65535,有符號(hào)數(shù)為-32768~+3
12、2767。 八進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0~0177777。 十六進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0X0~0XFFFF或0x0~0xffff。 如果使用的數(shù)超過(guò)了上述范圍,就必須加上后綴“L”或“l(fā)”變?yōu)殚L(zhǎng)整型數(shù)來(lái)表示。 例如:567L (十進(jìn)制為567)注意:長(zhǎng)整數(shù)567L和基本整常數(shù)567在數(shù)值上并無(wú)區(qū)別,但是所占存儲(chǔ)空間大小不同。對(duì)567L而言,因?yàn)槭情L(zhǎng)整型量,編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)567,因是
13、基本整型,則只分配2個(gè)字節(jié)的存儲(chǔ)空間。,15,2.整型變量,(1) 整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中是以二進(jìn)制形式存放的,例如,定義了一個(gè)整型變量a:int a;/*定義a為整型變量*/a=11;/*給a附以初值11*/由于在內(nèi)存中數(shù)值是以補(bǔ)碼表示的,正整數(shù)的補(bǔ)碼和它的原碼在二進(jìn)制形式上是相同的。所以,a=11,在內(nèi)存中的存放形式如下所示。,16,負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式按位取反后再加1。例如:求
14、-11的補(bǔ)碼:,符號(hào)位,(2)整型的分類,基本型:類型說(shuō)明符為int,在內(nèi)存中占2個(gè)字節(jié)。短整量:類型說(shuō)明符為short int或short。所占字節(jié)和取值范圍均與基本型相同。長(zhǎng)整型:類型說(shuō)明符為long int或long,在內(nèi)存中占4個(gè)字節(jié)。,17,有符號(hào)型:類型說(shuō)明符為signed;無(wú)符號(hào)型:類型說(shuō)明符為unsigned。有符號(hào)型與無(wú)符號(hào)型又可與前三種類型匹配而構(gòu)成:,上面帶[ ]的部分表示其內(nèi)容可以省略,18,(3)整型變量
15、的定義,變量定義的格式為: 類型說(shuō)明符 變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,...;說(shuō)明:允許在一個(gè)類型說(shuō)明符后,定義多個(gè)相同類型的變 量,并使用逗號(hào)分割變量名中多個(gè)變量,使用分號(hào)結(jié) 束。類型說(shuō)明符與變量名之間至少用一個(gè)空格間隔。變量定義必須放在變量使用之前。一般放在函數(shù)體的開(kāi)頭部分。在程序的同一部分,禁止對(duì)同一變量進(jìn)行重復(fù)定義,在書(shū)寫(xiě)不同種類型變量定義時(shí),避免都寫(xiě)在一行上。對(duì)所用到的變量
16、必須進(jìn)行強(qiáng)制定義,即“先定義,后使用”。int a,b,c; /*a,b,c為整型變量*/long x,y; /*x,y為長(zhǎng)整型變量*/,19,例2.3整型變量的定義與使用,,程序運(yùn)行結(jié)果:b=x+a=-1,sum=12,average=6,20,(4)整型數(shù)據(jù)的溢出,每個(gè)整型數(shù)據(jù)都有其自身的數(shù)據(jù)類型,有其自身所占存儲(chǔ)空間大小,基本整型int定義的變量的最大允許存儲(chǔ)值為32767,例3.4整型數(shù)據(jù)的溢出,,程序運(yùn)行結(jié)果:
17、32767,-32768,程序分析: 計(jì)算結(jié)果-32768與實(shí)際應(yīng)該的結(jié)果32768相差一個(gè)符號(hào),為什么呢?數(shù)據(jù)在內(nèi)存中都是以該數(shù)的補(bǔ)碼的二進(jìn)制形式存放的,32767的補(bǔ)碼為0111 1111 1111 1111,加1后發(fā)生進(jìn)位,變成1000 0000 0000 0000,最高位的1占據(jù)了符號(hào)位,而它正好是-32768的補(bǔ)碼形式,所以才有上述輸出結(jié)果。,21,2.3.2實(shí)型數(shù)據(jù),1.實(shí)型數(shù)據(jù)表示方法 實(shí)型也稱為浮點(diǎn)型。C
18、語(yǔ)言中,實(shí)數(shù)有二種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。十進(jìn)制數(shù)形式:由數(shù)字0~9和小數(shù)點(diǎn)組成。注意,必須有小數(shù)點(diǎn),且小數(shù)點(diǎn)的前面或后面必須有數(shù)字。 例如:3.1415926,0.0、0.1、7.0、780.、-25.860等均為合法的實(shí)數(shù)。指數(shù)形式:由十進(jìn)制數(shù)(基數(shù))、加階碼標(biāo)志“e”或“E”以及指數(shù)(階碼,只能為整數(shù),可以帶符號(hào))組成。 其一般形式為: a E n(a為十進(jìn)制數(shù)—基數(shù),n為十進(jìn)制整數(shù)—階碼)
19、 其值為 a*10n。 如:1.6E2 (等于1.6*102) 注意:階碼標(biāo)志e(或E)之前必須有數(shù)字,且e后的指數(shù)必須為整數(shù)。,22,2.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式,實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間。與整型數(shù)據(jù)的存儲(chǔ)方式不同,系統(tǒng)把一個(gè)實(shí)型數(shù)據(jù)分為小數(shù)部分和指數(shù)部分分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式表示。例如,實(shí)數(shù)7.15731在內(nèi)存中的存放形式如下:,,,圖中是用十進(jìn)制形式來(lái)表示的,實(shí)際上計(jì)算機(jī)中是
20、用二進(jìn)制來(lái)表示小數(shù)部分,以及用2的冪次來(lái)表示指數(shù)部分的。,+ .715731×(+101)=0.715731,23,3.實(shí)型變量的分類,實(shí)型變量分為:?jiǎn)尉龋╢loat型)、雙精度(double型)和長(zhǎng)雙精度(long double型)三類。,實(shí)型變量定義,例如:float x,y; /*x,y為單精度實(shí)型量*/double a,b,c; /*a,b,c為雙精度實(shí)型量*/long double z; /*
21、z為長(zhǎng)雙精度實(shí)型量*/,24,4.實(shí)型數(shù)據(jù)的舍入誤差,由于實(shí)型變量的存儲(chǔ)單元能提供的有效數(shù)字總是有限的,其中單精度的有效數(shù)字是7為,雙精度的是16位。在有效位數(shù)之外的數(shù)字將被舍去,因此會(huì)產(chǎn)生誤差。,例2.5 實(shí)型數(shù)據(jù)的舍入誤差。,,程序運(yùn)行結(jié)果: 7654321152.000000, 7654321152.000000,“%f”是輸出實(shí)數(shù)的制定格式。結(jié)果中x=y(tǒng),單精度的x較33大的多,其有效位數(shù)是7位,超過(guò)此范圍的數(shù)字是無(wú)意義
22、的。Turbo C 規(guī)定小數(shù)后最多保留六位。應(yīng)避免這種被“忽視”的情況發(fā)生。,25,5.實(shí)型常數(shù)的類型,實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。例如定義一個(gè)實(shí)型變量a,進(jìn)行如下運(yùn)算:a=3.14159*7.1617編譯系統(tǒng)先將3.14159和7.1617作為雙精度數(shù)進(jìn)行相乘的運(yùn)算,得到的結(jié)果也是雙精度的,然后取其前7位有效數(shù)字賦值給實(shí)型變量a。這樣,可以使計(jì)算的結(jié)果更加精確。,26,2.3.3 字符型數(shù)據(jù)和字符串常量,
23、字符型數(shù)據(jù)包括字符常量和字符變量。1.字符常量字符常量是用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符。例如:‘x’、‘d’、‘=’、‘!’等都是合法字符常量。注意:'d'和'D'是兩個(gè)不同的字符常量。注意:字符常量只能是單個(gè)字符,不能是字符串。字符可以是字符集中除了單引號(hào)本身“'”、雙引號(hào)“"”、反斜杠“\”外的任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運(yùn)算。如'6'和6
24、是不同的。'6’是字符常量,不能參與運(yùn)算。,例,‘a(chǎn)’,‘A’, ‘1’‘a(chǎn)bc’、“a”,,?,27,2.轉(zhuǎn)義字符,轉(zhuǎn)義字符以反斜線“\”開(kāi)頭,后跟一個(gè)或幾個(gè)字符。轉(zhuǎn)義字符具有特定的含義,不同于字符的原意,故稱“轉(zhuǎn)義”字符。如,輸出函數(shù)中用到的“\n”其意義是“回車換行” C語(yǔ)言中,轉(zhuǎn)義字符有三種:簡(jiǎn)單轉(zhuǎn)義字符、八進(jìn)制轉(zhuǎn)義字符和十六進(jìn)制轉(zhuǎn)義字符。,\n 換行 \t 橫向跳格(水平制表8
25、列)\r 回車 \\ 反斜杠\’ 單引號(hào) \” 雙引號(hào) \ddd ddd表示1到3位八進(jìn)制數(shù)字\xhh hh表示1到2位十六進(jìn)制數(shù)字,28,例2.6 轉(zhuǎn)義字符的使用。,程序運(yùn)行結(jié)果: f___g_c_de,,程序分析:注意:轉(zhuǎn)義字符的作用。首先在左端輸出“__ab__c”,然后遇到“\t”,它的作用是跳到下一個(gè)制表符位置;一個(gè)制表符占
26、8列,下一制表符位置從第9列開(kāi)始,故在第9~10列上輸出“de”;然后遇到“\r”,它代表“回車”(不換行),于是返回到本行的行首(最左端第1列),輸出“f____”;然后遇到“\b”,它代表“退一格”,接著輸出“g”。,程序運(yùn)行時(shí)的輸出結(jié)果為:f_abg_c_de但顯示器上看到的結(jié)果與上述結(jié)果不同,為:f___g_c_de中間的字符被后續(xù)字符取代了。,29,3.字符變量字符變量用來(lái)存儲(chǔ)字符常量,它只能存放一個(gè)字符。字符變量
27、的類型說(shuō)明符是char。字符變量類型定義的格式和書(shū)寫(xiě)規(guī)則都與整型變量相同。例如: char a,b;4.在內(nèi)存中的存儲(chǔ)形式每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,字符型數(shù)據(jù)在存儲(chǔ)時(shí),并不是把該字符本身放到內(nèi)存單元中,而是把該字符的ASCII碼值存放在變量的內(nèi)存單元之中的。例如:A的十進(jìn)制ASCII碼是65,a的十進(jìn)制ASCII碼是97,30,在內(nèi)存單元中存放的是65和97的二進(jìn)制代碼:,字符型數(shù)據(jù)在內(nèi)存中是以ASCII碼存放
28、的,它的存儲(chǔ)形式與整數(shù)的存儲(chǔ)形式類似。使得字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。C語(yǔ)言允許對(duì)整型變量賦以字符值,也允許對(duì)字符變量賦以整型值。在輸出時(shí),允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。,31,例2.7 向字符變量與整型數(shù)據(jù)通用,程序運(yùn)行結(jié)果: a,A 65,97,,a,b值的輸出形式取決于printf函數(shù)格式串中的格式符,當(dāng)格式符為"%c"時(shí),對(duì)應(yīng)輸出的變量值為字符,當(dāng)格式符為&qu
29、ot;%d"時(shí),對(duì)應(yīng)輸出的變量值為整數(shù)。由此可知,字符型數(shù)據(jù)和整型數(shù)據(jù)是可以通用的,但要注意字符型數(shù)據(jù)只占一個(gè)字節(jié),它只能存放0-255范圍的整數(shù)。,32,例2.8 大小寫(xiě)字母的轉(zhuǎn)換,程序運(yùn)行結(jié)果:A,b65,98,,a,b為字符變量并賦予字符值,C語(yǔ)言允許字符變量參與數(shù)值運(yùn)算,即用字符的ASCII碼值參與運(yùn)算。大小寫(xiě)字母的ASCII 碼值相差32,因此可以將小寫(xiě)字母與大寫(xiě)字母進(jìn)行相互轉(zhuǎn)換,然后分別以字符型和整型輸出。,3
30、3,5.字符串常量,字符常量是用一對(duì)單引號(hào)括起來(lái)的一個(gè)字符,而字符串常量則是由一對(duì)雙引號(hào)括起的字符序列。 例如: “chongqing” , “C program” , “&1.75” ,“a”等都是合法的字符串常量。 字符串常量和字符常量是不同的量。它們之間的主要區(qū)別如下:外形不同,字符常量由一對(duì)單引號(hào)括起來(lái),字符串常量由一對(duì)雙引號(hào)括起來(lái)。注意,'a'和"a"是不同的。內(nèi)容不同
31、,字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。單向賦值,可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量??臻g不同,字符常量占一個(gè)字節(jié)的內(nèi)存空間,字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。末尾增加的一個(gè)字節(jié)用于存放字符串結(jié)束的標(biāo)志字符"\0" (ASCII碼為0)。,34,字符串 "chongqing" 的長(zhǎng)度是9個(gè)字節(jié),在內(nèi)存中所占的字節(jié)為10,
32、其存儲(chǔ)方式如下圖所示:,最后一個(gè)字符為'\0',在輸出時(shí)是不會(huì)輸出'\0'的。注意在書(shū)寫(xiě)程序時(shí)不必加'\0','\0'是系統(tǒng)自動(dòng)加上的。字符常量'a'和字符串常量"a"雖然都只有一個(gè)字符,但在內(nèi)存中的情況是不同的。'a'在內(nèi)存中占一個(gè)字節(jié),"a"在內(nèi)存中占二個(gè)字節(jié)。,35,2.3.4 各數(shù)據(jù)類型間的混
33、合運(yùn)算,整型(包括int,short, long)、浮點(diǎn)型(包括float, double)可以混合運(yùn)算。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算.轉(zhuǎn)換的原則就是為了兩個(gè)運(yùn)算對(duì)象的計(jì)算結(jié)果盡可能提供多的存儲(chǔ)空間。當(dāng)運(yùn)算符兩端的運(yùn)算對(duì)象的數(shù)據(jù)類型不一致時(shí),在運(yùn)算前先將類型等級(jí)較低的數(shù)據(jù)轉(zhuǎn)換成等級(jí)較高的數(shù)據(jù)——保值轉(zhuǎn)換。,上述的類型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的.,橫向向左的箭頭表示必定的轉(zhuǎn)換,縱向的箭頭表示數(shù)據(jù)類型級(jí)別的高低,
34、實(shí)際運(yùn)算時(shí)不需逐級(jí)轉(zhuǎn)換,可由級(jí)別低的直接轉(zhuǎn)換為級(jí)別高的。,36,賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長(zhǎng)度左邊長(zhǎng)時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。,例3.9 數(shù)據(jù)類型轉(zhuǎn)換,,程序運(yùn)行結(jié)果: s=78,PI為實(shí)型;s,r為整型。在執(zhí)行s=r*r*PI語(yǔ)句時(shí),r和PI都轉(zhuǎn)換成double型計(jì)算,結(jié)果也為double型。但由于s為整型,故賦值結(jié)果仍為
35、整型,舍去了小數(shù)部分。,37,2.3.5 簡(jiǎn)單數(shù)據(jù)類型的表示范圍,38,2.3.6 數(shù)據(jù)的簡(jiǎn)單輸出,將數(shù)據(jù)結(jié)果展示出來(lái),必須使用輸出語(yǔ)句,所謂輸入輸出是以計(jì)算機(jī)為主體而言的。在C語(yǔ)言中,所有的數(shù)據(jù)輸入/輸出都是由庫(kù)函數(shù)完成的。在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令 #include將有關(guān)“頭文件”包括到源文件中。使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí)要用到 “stdio.h”文件,因此源文件開(kāi)頭應(yīng)有以下預(yù)編譯命令:
36、 #include 或 #include "stdio.h“stdio是standard input &outupt的英文縮寫(xiě),其意思是標(biāo)準(zhǔn)輸入輸出。,39,printf函數(shù)調(diào)用的一般形式為:printf("格式控制字符串",輸出表列)其中“格式控制字符串”用于指定輸出格式?!案袷娇刂谱址笨捎筛袷阶址头歉袷阶址畠煞N組成。格式字符串是以%開(kāi)頭的字符串,在
37、%后面跟有各種格式字符,以說(shuō)明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等。如:“%d”表示按十進(jìn)制整型輸出;“%ld”表示按十進(jìn)制長(zhǎng)整型輸出;“%c”表示按字符型輸出等?!?f”表示按小數(shù)形式輸出單、雙精度實(shí)數(shù)非格式字符串在輸出時(shí)原樣照印,在顯示中起提示作用。輸出表列中給出了各個(gè)輸出項(xiàng),要求格式字符串和各輸出項(xiàng)在數(shù)量和類型上應(yīng)該一一對(duì)應(yīng)。,40,例2.10 數(shù)據(jù)輸出,程序運(yùn)行結(jié)果:68 8068,80D,Pa=68,b=
38、80x is 3.140000,,輸出第一句中,在兩%d 之間加了一個(gè)空格(非格式字符),所以輸出的a,b值之間有一個(gè)空格。第二句中加入的是非格式字符逗號(hào),因此輸出的a,b間加了一個(gè)逗號(hào)。第三句要求按字符型輸出a,b值。第四句中為了提示輸出結(jié)果又增加了非格式字符串。第五句的格式串要求按實(shí)型輸出,其他非格式字符按原型輸出。,41,2.4 C語(yǔ)言的運(yùn)算符與表達(dá)式,2.4.1 C語(yǔ)言運(yùn)算符簡(jiǎn)介1.運(yùn)算符C語(yǔ)言的運(yùn)算符可分為算術(shù)運(yùn)算符、賦
39、值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符及一些特殊的運(yùn)算符。按運(yùn)算符與運(yùn)算對(duì)象(操作數(shù))的關(guān)系可將C語(yǔ)言的運(yùn)算符分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。 單目運(yùn)算符是指運(yùn)算符只需要一個(gè)操作數(shù),如!,++,--等; 雙目運(yùn)算符是指運(yùn)算符需要兩個(gè)操作數(shù),即運(yùn)算符的左右兩側(cè)都需要一個(gè)操作數(shù),如+,-,*,/,%等; 三目運(yùn)算符是指運(yùn)算符需要三個(gè)操作數(shù),如條件運(yùn)算符?:。,42,C語(yǔ)言的運(yùn)算符可分為以下幾
40、類:算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共七種。關(guān)系運(yùn)算符:用于比較運(yùn)算。包括大于(>)、小于(=)、小于等于(>)賦值運(yùn)算符:用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=) 條件運(yùn)算符:這是一個(gè)三目運(yùn)算符,用于條件求
41、值(? :)。逗號(hào)運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:強(qiáng)制進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換((類型))。分量運(yùn)算符:用于存取結(jié)構(gòu)和聯(lián)合中的成員(→,.),其優(yōu)先級(jí)在所有運(yùn)算符中是最高的。下標(biāo)運(yùn)算符:用于數(shù)組下標(biāo)的表示([ ]).其他運(yùn)算符:如函數(shù)調(diào)用運(yùn)算符(())。,43,2.表達(dá)式表
42、達(dá)式是使用運(yùn)算符和圓括號(hào)將操作數(shù)連接起來(lái)構(gòu)成的式子。C語(yǔ)言的操作數(shù)包括常量、變量、函數(shù)值等。例如:表達(dá)式(x-y)/(3*a+b)-6*d中包括+,-,/,*等運(yùn)算符,操作數(shù)包括x,y,a,b,3等。C語(yǔ)言的運(yùn)算符不僅具有不同的優(yōu)先級(jí),而且還有一個(gè)特點(diǎn),就是它的結(jié)合性。3.簡(jiǎn)單語(yǔ)句C語(yǔ)言中,在表達(dá)式的末尾加上一個(gè)分號(hào)“;”就構(gòu)成了簡(jiǎn)單語(yǔ)句。在程序設(shè)計(jì)過(guò)程中要避免使用無(wú)意義的簡(jiǎn)單語(yǔ)句。,44,1.賦值運(yùn)算符賦值就是將一個(gè)數(shù)據(jù)值存儲(chǔ)
43、到一個(gè)變量中。注意,賦值的對(duì)象只能是變量,而這個(gè)數(shù)據(jù)值既可以是常量,也可以是變量,還可以是有確定值的表達(dá)式。賦值運(yùn)算符記為“=”,其作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。例如,“a=3;”其作用是執(zhí)行一次賦值操作,表示將常量3賦給變量a。2.賦值表達(dá)式由賦值運(yùn)算符“= ”將一個(gè)變量和表達(dá)式連接的式子稱為賦值表達(dá)式。其一般形式為:變量=表達(dá)式例如: x=sin(a)+(i++);,2.4.2賦值運(yùn)算符和賦值表達(dá)式,45,對(duì)賦值表達(dá)
44、式求解的過(guò)程是: ①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值; ②賦給賦值運(yùn)算符左側(cè)的變量。例如: 賦值表達(dá)式“a=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。,注意: 一個(gè)表達(dá)式應(yīng)該有一個(gè)值,46,左值 (lvalue) : 賦值運(yùn)算符左側(cè)的標(biāo)識(shí)符變量可以作為左值;而表達(dá)式就不能作為左值(如a+b);常變量也不能作為左值,,右值 (rvalue) :出現(xiàn)在賦值運(yùn)算符右側(cè)的表達(dá)式 左值也可以出現(xiàn)在賦值
45、運(yùn)算符右側(cè),因而左值 都可以作為右值。,賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式.例如: a=(b=5),,分析:括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行 “b=5”和“a=b”兩個(gè)賦值表達(dá)式。 賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價(jià),最后a=5。,47,請(qǐng)分析下面的賦值表達(dá)式∶(a=3*5)=4
46、*3,分析:先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12??梢钥吹健?a=3*5)出現(xiàn)在賦值運(yùn)算符的左側(cè),因此賦值表達(dá)式(a=3*5)是左值,注意:在對(duì)賦值表達(dá)式(a=3*5)求解后,變量a得到值15,執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。,不能寫(xiě)成:a=3*5=4*3,48,將賦值表達(dá)式作為表達(dá)式的一種,使
47、賦值操作不僅可以出現(xiàn)在賦值語(yǔ)句中,而且可以以表達(dá)式形式出現(xiàn)在其他語(yǔ)句(如輸出語(yǔ)句、循環(huán)語(yǔ)句等)中. 如:printf("%d",a=b);,分析:如果b的值為3, 則輸出a的值(也是表達(dá)式a=b的值)為3。在一個(gè)語(yǔ)句中完成了賦值和輸出雙重功能。,49,3.類型轉(zhuǎn)換,如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:(1)整型數(shù)與實(shí)型數(shù)之間的
48、轉(zhuǎn)換將實(shí)型數(shù)據(jù)(單、雙精度)賦予整型變量時(shí),舍去實(shí)型數(shù)據(jù)的小數(shù)部分。例如:整型變量i,執(zhí)行“i=3.14”的結(jié)果是使得i的值為3,以整數(shù)形式存儲(chǔ)在內(nèi)存中。將整型數(shù)據(jù)賦給實(shí)型(單、雙精度)變量時(shí),數(shù)值不變,但以實(shí)型數(shù)據(jù)形式存儲(chǔ)在內(nèi)存中,即增加小數(shù)部分(小數(shù)部分的值為0)。,50,(2)實(shí)型數(shù)據(jù)之間的轉(zhuǎn)換將一個(gè)double型數(shù)據(jù)賦給float型變量時(shí),截取其前7位有效數(shù)字,存放到float型變量的存儲(chǔ)單元(32位)中。注意,數(shù)值范圍不
49、能溢出。例如:float a;double b=123.456789e100;a=b;便會(huì)出現(xiàn)溢出錯(cuò)誤。將一個(gè)float型數(shù)據(jù)賦給double型變量時(shí),其數(shù)值不變,有效位數(shù)擴(kuò)展到16位,在內(nèi)存中以64位存儲(chǔ)。,51,(3)整型數(shù)與字符型數(shù)之間的轉(zhuǎn)換字符型數(shù)據(jù)賦給整型變量時(shí),由于字符型只占一個(gè)字節(jié),而整型占二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,這時(shí)有兩種情況:如所用系統(tǒng)將字符型數(shù)據(jù)處理為無(wú)符號(hào)型的量或?qū)n
50、signed int型變量賦值,則將字符型數(shù)據(jù)(8位二進(jìn)制位)放到整型變量的低8位,高8位補(bǔ)為0。例如將字符'\376'(代表圖形字符“■”,其ASCII碼值為254)賦給int型變量a,如下圖所示。,52,如所用系統(tǒng)(如Turbo C++3.0)將字符型數(shù)據(jù)處理為帶符號(hào)型的量(即signed char),如字符最高位為0,則整型變量高8位補(bǔ)0;如字符最高位為1,則高8位全補(bǔ)1,見(jiàn)下圖所示。這稱為“符號(hào)擴(kuò)展”,這樣做的目
51、的是使數(shù)值保持不變,如上述字符'/376'以整數(shù)形式輸出為-2,a的值也是-2。,53,將一個(gè)int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(截?cái)啵?。例如:int a=291;char b='c';b=a;賦值情況見(jiàn)下圖所示,字符變量b的值為35,如用“%c”格式輸出b,將得到字符“?!保ㄆ銩SCII為35)。,54,(4)整型數(shù)據(jù)之間的轉(zhuǎn)換
52、如將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,將整型數(shù)的16位送到long型低16位中。如int型數(shù)據(jù)為正值(符號(hào)位為0),則long型變量的高16位補(bǔ)0;如int型變量為負(fù)值(符號(hào)位為1),則long型變量的高16位補(bǔ)1,以保證數(shù)值不改變。如將一個(gè)long型數(shù)據(jù)賦給一個(gè)int型變量,只將long型數(shù)據(jù)中低16位原封不動(dòng)地送到int型變量(截?cái)啵?。例如:int x;long y=9;x=y;賦值情況如下
53、圖所示,,55,如果y=65536(八進(jìn)制數(shù)0200000),則在賦值后x值為0,如下圖所示。,56,(5)無(wú)符號(hào)整數(shù)與其他整數(shù)之間的轉(zhuǎn)換將一個(gè)unsigned int類型數(shù)據(jù)賦給一個(gè)與其長(zhǎng)度相同的整型變量(如unsigned int→int,unsigned long→long,unsigned short→short)時(shí),將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,即進(jìn)行原樣復(fù)制;但如果數(shù)據(jù)范圍超過(guò)相應(yīng)整型的
54、范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。例如:unsigned int x=65535;int y;y=x;將x整個(gè)送到y(tǒng)中,如下圖所示。由于y是int型,第1位是符號(hào)位,因此y成了負(fù)數(shù)。根據(jù)補(bǔ)碼指數(shù)可知,y的值為-1,可以用printf("%d",b)來(lái)驗(yàn)證。,57,將非unsigned 型數(shù)據(jù)賦值給長(zhǎng)度相同的unsigned型變量,也是原樣賦值(連原有的符號(hào)也作為數(shù)值一起傳遞),,58,例2.11 有符號(hào)數(shù)據(jù)送給無(wú)符號(hào)變
55、量,程序運(yùn)行結(jié)果:65535程序分析:賦值情況如下圖所示,,不同類型的整型數(shù)據(jù)間的賦值歸根結(jié)底就是一條,按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。,59,4.復(fù)合賦值運(yùn)算符,除了基本賦值運(yùn)算符外,C語(yǔ)言還提供了另外十種復(fù)合運(yùn)算符。它們就是在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如+=,-=,*=,/=,%=,>=,&=,^=,|=。這些運(yùn)算符把“運(yùn)算”和“賦值”兩個(gè)操作結(jié)合在一起稱之為復(fù)合賦值運(yùn)算符。采用復(fù)合賦值
56、運(yùn)算符可提高代碼執(zhí)行效率。構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量 雙目運(yùn)算符=表達(dá)式它等效于:變量=變量 運(yùn)算符 表達(dá)式即將左邊的(變量)與右邊的(表達(dá)式)進(jìn)行(雙目運(yùn)算符)所規(guī)定的運(yùn)算,然后將值返回給變量。例如 x*=y+38 等價(jià)于x=x*(y+38),60,為便于記憶,可以這樣理解: ① x += y (其中x為變量,y為表達(dá)式) ② x += y(將有下劃線的“x+”移到“=”右側(cè))
57、 |___↑ ③ x = x + y (在“=”左側(cè)補(bǔ)上變量名a)注意:如y是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。對(duì)賦值表達(dá)式a+=a-=a*a,如果a的初值為3,則此賦值表達(dá)式求解步驟如下:先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a,a的值為3-9=-6。再進(jìn)行“a+=-6”的運(yùn)算,相當(dāng)于a=a+(-6),a的值為-6-6=-12。,61,2.4.3 強(qiáng)制類型轉(zhuǎn)換符,強(qiáng)制類型轉(zhuǎn)換符就是“()”,它是單目運(yùn)算符,
58、它把表達(dá)式的類型強(qiáng)制類型轉(zhuǎn)換成圓括號(hào)中的“數(shù)據(jù)類型名”所指定的類型。強(qiáng)制類型轉(zhuǎn)換又稱為顯示轉(zhuǎn)換。其一般形式為:(類型說(shuō)明符) (表達(dá)式)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型。例如: (int) a /*把a(bǔ)轉(zhuǎn)換為整型*/ (float)(x+y)/*把x+y的結(jié)果轉(zhuǎn)換為實(shí)型*/,62,使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問(wèn)題:類型說(shuō)明符和表達(dá)式都必須加括號(hào),單個(gè)變量可以不加括號(hào)。例如,不要把(
59、int)a,寫(xiě)成int(a)。上式(float)(x+y)如寫(xiě)成float x+y則只是將x轉(zhuǎn)換成實(shí)型,再與y相加。無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類型。例如,(int) a ,如a原指定為float型,則進(jìn)行強(qiáng)制類型轉(zhuǎn)換后,得到一個(gè)int型的中間變量,它的值等于a的整數(shù)部分,而a的類型不變,仍為float型。,63,例2.12 強(qiáng)制類型轉(zhuǎn)換,程序
60、運(yùn)行結(jié)果:x=3,a=3.140000程序分析:本例表明,a雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作用,是臨時(shí)的,而a本身的類型并不改變(仍為float型)。因此,(int)f的值為3(刪去了小數(shù))而f的值仍為3.14。,,64,2.4.4算術(shù)運(yùn)算符和算術(shù)表達(dá)式,(1)基本的算術(shù)運(yùn)算符:+ (加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)- (減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)* (乘法運(yùn)算符。如:3*5)/ (除法
61、運(yùn)算符。如:5/3)% (模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3),65,使用上述運(yùn)算符時(shí)需要注意幾點(diǎn):兩整數(shù)相除,結(jié)果為整數(shù)(舍去小數(shù)部分),商向下取整。如,20/7,的結(jié)果為2,3/4的結(jié)果為0。但是,如果除數(shù)或被除數(shù)中有一個(gè)為負(fù)數(shù),則舍入的方向是不固定的。例如,-5/3,有的機(jī)器上得到結(jié)果-1,有的機(jī)器上得到結(jié)果-2。多數(shù)機(jī)器采取“向零取整”的方法,即-5/3=-1,取整后向零靠攏。如參與+,-,
62、*,/運(yùn)算的兩個(gè)數(shù)中有一個(gè)為實(shí)型,則結(jié)果為double型,因?yàn)閷?shí)型都按dounle型進(jìn)行處理。取摸運(yùn)算符%實(shí)際上就是數(shù)學(xué)運(yùn)算中的求余運(yùn)算符,它要求參與運(yùn)算的兩個(gè)操作對(duì)象均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù),結(jié)果的符號(hào)與%左邊的操作數(shù)的符號(hào)相同。例如,20%3的結(jié)果為2,45%-8的結(jié)果為5(其中“-”為負(fù)值運(yùn)算符),-45%8的結(jié)果為-5。,66,例2.13 除法及求余運(yùn)算,程序運(yùn)行結(jié)果:2,-22.857143,-2.8
63、571431程序分析: 第一條輸出說(shuō)明除法運(yùn)算中兩操作數(shù)均為整數(shù)時(shí)其結(jié)果為整數(shù),如操作數(shù)中出現(xiàn)負(fù)數(shù),其結(jié)果向零取整。第二條輸出說(shuō)明除法運(yùn)算中兩操作數(shù)中有一個(gè)為實(shí)數(shù),其結(jié)果為double型。第三條輸出說(shuō)明取模運(yùn)算是得到兩除數(shù)的余數(shù),結(jié)果符號(hào)與%左邊的操作數(shù)的符號(hào)相同。,,67,2.4.5 自增自減運(yùn)算符,1.自增自減運(yùn)算符在C語(yǔ)言中提供了兩個(gè)特殊的運(yùn)算符:自增運(yùn)算符“++”和自減運(yùn)算符“――”。自增運(yùn)算符“++”,其功能是使
64、變量的值自增1。自減運(yùn)算符“――”,其功能是使變量值自減1。它們均為單目運(yùn)算,都具有右結(jié)合性,可以出現(xiàn)在運(yùn)算符的前面或后面。有以下幾種形式:++i i自增1后再參與其它運(yùn)算。――i i自減1后再參與其它運(yùn)算。i++ i參與運(yùn)算后,i的值再自增1。i―― i參與運(yùn)算后,i的值再自減1。注意區(qū)分“++”(或“――”)出現(xiàn)在運(yùn)算變量的前面還是后面,這決定著變量使用前進(jìn)行加(減)操作,還是
65、使用后進(jìn)行加(減)的操作 。,68,如i的初值為3,則j=++i是先執(zhí)行i加1后,再把i的值4賦給j,最終i和j的值均為4;而k=i++是先把i的值3賦給k后,再執(zhí)行i加1,最終k的值為3,i的值為4。使用自增、自減運(yùn)算符時(shí),需注意以下幾點(diǎn):自增運(yùn)算符(++)和自減運(yùn)算符(――),只能用于變量,而不能用于常量或表達(dá)式。例如,++26或(a-b)++是不合法的。自增、自減運(yùn)算符是單目運(yùn)算符,其優(yōu)先級(jí)高于基本的算術(shù)運(yùn)算符,與單目運(yùn)算符
66、“-”(取負(fù))的優(yōu)先級(jí)相同,其結(jié)合方向是“自右至左”。,69,例2.14 自增自減運(yùn)算,程序運(yùn)行結(jié)果:9889-8-9,,程序分析:i的初值為8,輸出語(yǔ)句第1行i加1后輸出故為9;輸出語(yǔ)句第2行減1后輸出故為8;第3行輸出i為8之后再加1(為9);第4行輸出i為9之后再減1(為8) ;第5行輸出-8之后再加1(為9),第7行輸出-9之后再減1(為8)。注意,-i++和-i――之前的“-”為負(fù)值運(yùn)算符,因此按照結(jié)合性這兩個(gè)
67、表達(dá)式相當(dāng)于-(i++)和-(i――)。,70,2.表達(dá)式使用中的問(wèn)題說(shuō)明,ANSI C并沒(méi)有具體規(guī)定表達(dá)式中的子表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。 例如:對(duì)表達(dá)式 a = f1( )+f2( )并不是所有的編譯系統(tǒng)都先調(diào)用f1( ), 然后調(diào)用f2( )。在有的情況下結(jié)果可能不同。有時(shí)會(huì)出現(xiàn)一些令人容易搞混的問(wèn)題,因此務(wù)必要小心謹(jǐn)慎。調(diào)用先后順序不同,結(jié)果可能不同。C語(yǔ)言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字
68、符組成 ,為避免誤解,最好采取大家都能理解的寫(xiě)法。 例如:不要寫(xiě)成a+++b的形式,而應(yīng)寫(xiě)成 (a++)+b的形式,71,2.4.6 位運(yùn)算符、位運(yùn)算表達(dá)式,前面介紹的各種運(yùn)算都是以字節(jié)作為最基本位進(jìn)行的。C語(yǔ)言中,提供了位運(yùn)算的功能,這使得C語(yǔ)言也能像匯編語(yǔ)言一樣用來(lái)編寫(xiě)系統(tǒng)程序。C語(yǔ)言提供了6種位運(yùn)算符,可分為兩類:位邏輯運(yùn)算符和移位運(yùn)算符。,位邏輯運(yùn)算符有4種,它們是:& 按位與|
69、 按位或^ 按位異或~ 取反 移位運(yùn)算符有2種,它們是:> 右移,72,1.字節(jié)和位在計(jì)算機(jī)中內(nèi)存是以字節(jié)為單位的連續(xù)的存儲(chǔ)空間,每個(gè)內(nèi)存單元(字節(jié)byte)有一個(gè)唯一的編號(hào),即地址。一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位(bit)組成,其中最右邊的一位稱為“最低位”,最左邊的一位稱為“最高位”。每個(gè)二進(jìn)制位的值是0或1。2.數(shù)值的編碼表示在計(jì)算機(jī)內(nèi)表示數(shù)值的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 習(xí)題二數(shù)據(jù)類型運(yùn)算符和表達(dá)式習(xí)題
- 第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式
- c語(yǔ)言上機(jī)實(shí)數(shù)據(jù)類型運(yùn)算符和表達(dá)式
- 二c++基本數(shù)據(jù)類型與表達(dá)式
- javascript數(shù)據(jù)類型及常量變量表達(dá)式和運(yùn)算符教案
- 最右推導(dǎo)1〈表達(dá)式〉〈表達(dá)式〉〈運(yùn)算符〉
- java運(yùn)算符、表達(dá)式、語(yǔ)句
- 第2章 c語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式
- 語(yǔ)言程序設(shè)計(jì)基礎(chǔ)基本數(shù)據(jù)類型和表達(dá)式
- 條件表達(dá)式及運(yùn)算符的應(yīng)用
- c語(yǔ)言運(yùn)算符與表達(dá)式的練習(xí)題答案
- c世界中的加減乘除運(yùn)算符和表達(dá)式
- c++的初步知識(shí)數(shù)據(jù)類型與表達(dá)式
- 基本數(shù)據(jù)類型和數(shù)組
- 基本語(yǔ)法單位及基本數(shù)據(jù)類型
- c語(yǔ)言運(yùn)算符
- java-數(shù)據(jù)類型及其運(yùn)算
- oracle 通配符和運(yùn)算符
- flash__actionscript3.0_(運(yùn)算符)
- [教育]運(yùn)算符與順序程序設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論