程序設計初步數(shù)據(jù)類型新實用教案_第1頁
程序設計初步數(shù)據(jù)類型新實用教案_第2頁
程序設計初步數(shù)據(jù)類型新實用教案_第3頁
程序設計初步數(shù)據(jù)類型新實用教案_第4頁
程序設計初步數(shù)據(jù)類型新實用教案_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、l 主要(zhyo)內(nèi)容2.1 C+2.1 C+語言的數(shù)據(jù)語言的數(shù)據(jù)(shj)(shj)類型類型2.2 2.2 常量與變量常量與變量2.3 2.3 整型數(shù)據(jù)整型數(shù)據(jù)(shj)(shj)2.4 2.4 浮點型數(shù)據(jù)浮點型數(shù)據(jù)(shj)(shj)2.5 2.5 字符型數(shù)據(jù)字符型數(shù)據(jù)(shj) (shj) 2.62.6布爾型數(shù)據(jù)布爾型數(shù)據(jù)(shj)(shj)第1頁/共86頁第一頁,共87頁。l 主要(zhyo)內(nèi)容2.7 2.7 各類數(shù)值各類數(shù)值(shz)(shz)型數(shù)據(jù)間的混合運算型數(shù)據(jù)間的混合運算 2.8 2.8 運算符和表達式運算符和表達式 第2頁/共86頁第二頁,共87頁。 2.1 C+的數(shù)據(jù)

2、類型C+語言(yyn)提供了以下一些數(shù)據(jù)類型。 布爾型數(shù)據(jù)第3頁/共86頁第三頁,共87頁。 2.2 常量(chngling)與變量 2.2.1 2.2.1 常量常量在程序運行過程在程序運行過程(guchng)(guchng)中中, ,其值不能被改其值不能被改變的量稱為常量變的量稱為常量常量區(qū)分為不同的類型:常量區(qū)分為不同的類型:整型 100,125,-100,0實型 3.14 , 0.125,-3.789字符(z f)型 a, b,2符號常量為了使用方便,可用一個符號名來代表一個常量。第4頁/共86頁第四頁,共87頁。例例2.1在程序中使用符號在程序中使用符號(fho)常量常量 #defin

3、e PRICE 30#include void main ( ) int num, total; num=10; total=num * PRICE; printf(total=%dn,total); 運行運行(ynxng)(ynxng)結果:結果: total=300total=300如再用賦值語句給PRICE賦值是錯的PRICE=40;/ /* * 錯誤,不能給符號常量賦不能對符號常量指定類型int PRICE; / /* * 錯誤,PRICEPRICE不是變量,不能指定類型 * */ / 第5頁/共86頁第五頁,共87頁。 2.2 常量(chngling)與變量 2.2.2 2.2.2變

4、量變量在程序運行過程在程序運行過程(guchng)(guchng)中可以改變的量。中可以改變的量。變量變量 - b 第8頁/共86頁第八頁,共87頁。 2.2 常量(chngling)與變量第9頁/共86頁第九頁,共87頁。 2.3 整型數(shù)據(jù)(shj)2.3.12.3.1整型常量的表示形式整型常量的表示形式 整型常量即整常數(shù)。在整型常量即整常數(shù)。在+語言中,整常語言中,整常數(shù)數(shù)可用以下可用以下(yxi)(yxi)三種形式表示:三種形式表示:(1)(1)十進制整數(shù)。十進制整數(shù)。 如:如:123, -456123, -456,4 4。(2)(2)八進制整數(shù)。以八進制整數(shù)。以0 0頭的數(shù)是八進制數(shù)。

5、頭的數(shù)是八進制數(shù)。 如:如:01230123表示八進制數(shù)表示八進制數(shù)123123,等于十進制,等于十進制數(shù)數(shù)83,-01183,-011表示八進制數(shù)表示八進制數(shù)-11,-11,即十進制數(shù)即十進制數(shù)-9-9。第10頁/共86頁第十頁,共87頁。 2.3 整型數(shù)據(jù)(shj)2.3.12.3.1整型常量的表示整型常量的表示(biosh)(biosh)形式形式(3)(3)十六進制整數(shù)。以十六進制整數(shù)。以0 x0 x開頭的數(shù)是開頭的數(shù)是1616進制進制數(shù)。數(shù)。 如:如:0 x1230 x123,代表,代表1616進制數(shù)進制數(shù)123,123,等于十等于十進制數(shù)進制數(shù) 291 291。 -0 x12 -0

6、x12等于十進制數(shù)等于十進制數(shù)1010。 2.3.2 2.3.2整型變量整型變量整型變量用來整型變量用來(yn li)(yn li)存放整型常量。整型變量存放整型常量。整型變量的基本類型符為的基本類型符為intint。C+C+語言中有以下語言中有以下3 3類整型變量類整型變量 :基本整型,短整:基本整型,短整型,長整型。型,長整型。第11頁/共86頁第十一頁,共87頁。2.3 整型數(shù)據(jù)(shj) 2.3.2整型變量一般情況下,存儲整數(shù)時存儲單元中的第一個二進位用來代表數(shù)值符號,而在實際應用中,變量的值常常是正的 ,所以存儲單元全部用來存儲數(shù)值本身(bnshn),此定義無符號整數(shù)。所以歸納起來,

7、在C+語言中,可以定義和使用6種整型變量共六種有符號(fho)基本整型有符號(fho)短整型有符號(fho)長整型無符號(fho)基本整型無符號(fho)短整型無符號(fho)長整型(signed)int (signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意:注意:括號表示其中的內(nèi)容是可選的.第12頁/共86頁第十二頁,共87頁。 2.3 整型數(shù)據(jù)(shj) 2.3.2整型變量 整數(shù)類型的有關(yugun)數(shù)據(jù):第13頁/共86頁第十三頁,共87頁。例例2.2

8、整型變量的定義與使用整型變量的定義與使用#include void main()() int a,b,c,d; /*指定指定(zhdng)、為整型變量、為整型變量* unsigned *指定指定(zhdng)為無為無符號整型變量符號整型變量* 12;-24;10; ; printf(,);,); 運行運行(ynxng)(ynxng)結果:結果: , 第14頁/共86頁第十四頁,共87頁。 2.3 整型數(shù)據(jù) 2.3.3整型數(shù)據(jù)在內(nèi)存中的存放(cnfng)形式 數(shù)據(jù)在內(nèi)存中以二進制形式(xngsh)存放。 如: int i; /* 定義為整型變量 */ i=10; /* 給i賦以整數(shù)10 */ i

9、 i (a) (b)0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 010第15頁/共86頁第十五頁,共87頁。 2.3 整型數(shù)據(jù) 2.3.3整型數(shù)據(jù)在內(nèi)存中的存放(cnfng)形式 實際上,數(shù)值是以補碼表示的。一個(y )正整數(shù)的補碼和該數(shù)的原碼相同。負數(shù)的補碼是:將該數(shù)的絕對值的二進制形式,按位取反再加1。 10的原碼 (a) 取反 (b) 得-10的補碼 (c) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 01 1 11 1 1 1 1 1 1 1 1 0 10 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0第16頁/共86頁第十六頁,共87

10、頁。例例2.3 整型數(shù)據(jù)整型數(shù)據(jù)(shj)的溢出的溢出#include void main()int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b);運行運行(ynxng)(ynxng)結果:結果: 32767,-3276832767,-32768 如果系統(tǒng)給一個整型變量分配2個字節(jié),則變量的最大允許值為32767,若超出最大值則出現(xiàn)溢出現(xiàn)象。 第17頁/共86頁第十七頁,共87頁。 2.3 整型數(shù)據(jù)(shj) 2.3.5 2.3.5 整型常量的類型整型常量的類型 整型變量的分類規(guī)則:整型變量的分類規(guī)則: (1) (1)一個整數(shù),如果其值在一個整數(shù),如果其值

11、在-32768-32768+32767+32767范范圍內(nèi),認為圍內(nèi),認為(rnwi)(rnwi)它是它是intint型,它可以賦值型,它可以賦值給給intint型和型和long intlong int型變量。型變量。 (2) (2) 一個整數(shù),如果其值超過了上述范圍,而一個整數(shù),如果其值超過了上述范圍,而在在-2147483637-2147483637+2147483647+2147483647范圍內(nèi),則認為范圍內(nèi),則認為(rnwi)(rnwi)它是為長整型??梢詫⑺x值給一個它是為長整型??梢詫⑺x值給一個long intlong int型變量。型變量。 第18頁/共86頁第十八頁,共87

12、頁。 2.3 整型數(shù)據(jù)(shj) 2.3.5 2.3.5 整型常量的類型整型常量的類型 (3) (3) 在一個整常量后面加一個字母在一個整常量后面加一個字母l l或或L L,則認,則認為是為是long intlong int型常量,例如型常量,例如123l123l、432L432L、0L0L等等,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為long intlong int型,則要求實參也為型,則要求實參也為long intlong int型。型。 (4) (4) 一個整常量后面加一個字母一個整常量后面加一個字母u u或或U U,認為是,認為是unsigned

13、intunsigned int型,如型,如12345u12345u在內(nèi)存中按在內(nèi)存中按unsigned intunsigned int規(guī)定的方式存放規(guī)定的方式存放( (存儲單元中最存儲單元中最高位不作為符號高位不作為符號(fho)(fho)位,而用來存儲數(shù)據(jù)位,而用來存儲數(shù)據(jù)) )。第19頁/共86頁第十九頁,共87頁。 2.4 浮點型數(shù)據(jù)(shj) 2.4.1 2.4.1浮點型常量的表示(biosh)(biosh)形式兩種表示形式(xngsh)十進制小數(shù)指數(shù)0.1230.1233 3e-3e-3注意注意: :字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù) 第20頁/共86頁第二十頁,

14、共87頁。 2.4 浮點型數(shù)據(jù)(shj) 2.4.1 2.4.1浮點型常量的表示形式浮點型常量的表示形式 規(guī)范化的指數(shù)形式:規(guī)范化的指數(shù)形式: 在字母在字母e e(或(或E E)之前)之前(zhqin)(zhqin)的小數(shù)部分中的小數(shù)部分中,小數(shù)點左邊,小數(shù)點左邊應有一位(且只能有一位)非零的數(shù)字應有一位(且只能有一位)非零的數(shù)字. . 例如例如: 123.456: 123.456可以表示為:可以表示為: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00

15、123456e0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的1.23456e31.23456e3稱為稱為“規(guī)范化的指數(shù)形式規(guī)范化的指數(shù)形式”。第21頁/共86頁第二十一頁,共87頁。 2.4 浮點型數(shù)據(jù)(shj) 2.4.2 2.4.2 浮點型變量浮點型變量 1 1)浮點型變量分為)浮點型變量分為(fn wi)(fn wi)單精度(單精度(floatfloat型)、雙精度(型)、雙精度(doubledouble型)和長雙精型)和長雙精度型(度型(long doublelong double)三類形式。)三類形式。第22頁/共86頁第二十二頁,共87頁。

16、2.4 浮點型數(shù)據(jù)(shj) 2.4.2 浮點型變量 2)浮點型數(shù)據(jù)在內(nèi)存中的存放形式: 一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點型數(shù)據(jù)分成(fn chn)小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。第23頁/共86頁第二十三頁,共87頁。3)浮點型數(shù)據(jù)的舍入誤差)浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由有限由于浮點型變量是由有限(yuxin)的存儲單元組成的,因此能提供的有效數(shù)字總是有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限(yuxin)的。在有效位以外的數(shù)字將被舍去。由此可能的。在有效位

17、以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差會產(chǎn)生一些誤差例例2.4 浮點型數(shù)據(jù)的舍入誤差浮點型數(shù)據(jù)的舍入誤差#include void main()float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); 運行運行(ynxng)(ynxng)結果:結果: 123456.789e5123456.789e5 2.4.2 2.4.2 浮點型變量浮點型變量第24頁/共86頁第二十四頁,共87頁。 .4 浮點型數(shù)據(jù)(shj).4.3 .4.3 浮點型常量浮點型常量(chngling)(chngling)的類型的類型 C+ C+編譯系統(tǒng)將浮點型常

18、量編譯系統(tǒng)將浮點型常量(chngling)(chngling)作為雙精度來作為雙精度來處理。處理。 例如:例如:f = 2.45678 f = 2.45678 * * 4523.65 4523.65 系統(tǒng)先把系統(tǒng)先把2.456782.45678和和4523.654523.65作為雙精度數(shù),然后進行作為雙精度數(shù),然后進行相乘的運算,得到的乘也是一個雙精度數(shù)。相乘的運算,得到的乘也是一個雙精度數(shù)。如果把一個浮點型常量如果把一個浮點型常量(chngling)(chngling)賦給一個單精度賦給一個單精度變量變量f f系統(tǒng)給出警告,警告不影響連接和運行最后結系統(tǒng)給出警告,警告不影響連接和運行最后結果

19、但只取其結果前果但只取其結果前7 7位賦給浮點型變量位賦給浮點型變量f f。如是在數(shù)的后面加字母如是在數(shù)的后面加字母f f或或F F(如(如1.65f, 654.87F1.65f, 654.87F),),編譯系統(tǒng)就會把它們按單精度處理。編譯系統(tǒng)就會把它們按單精度處理。第25頁/共86頁第二十五頁,共87頁。 .5 字符(z f)型數(shù)據(jù) .5.1 .5.1 字符常量字符常量(chngling)(chngling)(1)(1)用單引號包含的一個字符是字符型常量用單引號包含的一個字符是字符型常量(chngling)(chngling)(2)(2)只能包含一個字符只能包含一個字符a a, ,A A,

20、, 1 1abcabc、“a a”第26頁/共86頁第二十六頁,共87頁。 2.5 字符型數(shù)據(jù)(shj) .5.1 字符常量 有些以“”開頭(ki tu)的特殊字符稱為轉義字符 含 義 ASCII代碼 換行,將當前位置移到下一行開頭 10 水平制表(跳到下一個Tab位置) 9 退格,將當前位置移到前一列 8 回車,將當前位置移到本行開頭 13 換頁,將當前位置移到下頁開頭 12 a 發(fā)出鈴聲 7 代表一個反斜杠字符“”92 代表一個單撇號字符 39 代表一個雙撇號字符34 到位八進制數(shù)所代表的字符 到位十六進制數(shù)所代表的字符 第27頁/共86頁第二十七頁,共87頁。例例2.5 轉義字符的使用轉

21、義字符的使用(shyng)#include void ()() ( ab ct derftgn); printf(htibbj kn); 打印機上的顯示打印機上的顯示(xinsh)(xinsh)結果:結果: fab c gde fab c gde h jik h jik 顯示屏上的運行顯示屏上的運行(ynxng)(ynxng)結果:結果: f gde f gde j k j k第28頁/共86頁第二十八頁,共87頁。 2.5 字符(z f)型數(shù)據(jù) 2.5.2字符變量(binling)字符型變量(binling)用來存放字符常量,注意只能放一個字符。字符變量(binling)的定義形式如下:ch

22、ar c1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值: c1a;c2 b ;一個字符變量(binling)在內(nèi)存中占一個字節(jié)。 第29頁/共86頁第二十九頁,共87頁。 2.5 字符(z f)型數(shù)據(jù) 2.5.3 2.5.3 字符數(shù)據(jù)在內(nèi)存字符數(shù)據(jù)在內(nèi)存(ni cn)(ni cn)中的存儲形式及中的存儲形式及其使用方法其使用方法字符變量中存放的是字符的字符變量中存放的是字符的ASCIIASCII碼,這樣和部分碼,這樣和部分intint數(shù)據(jù)通用。數(shù)據(jù)通用。注意: 字符數(shù)據(jù)可以(1)%c形式輸出 (2) %d形式輸出 (3)可以與int數(shù)據(jù)進行(jnxng)運算第30頁/共86頁第三十頁,共8

23、7頁。例例2.6 2.6 向字符變量賦予向字符變量賦予(fy)(fy)整數(shù)。整數(shù)。 #include #include void main()void main() char c1,c2; char c1,c2; c1=97; c1=97; c2=98; c2=98; printf(“%c %cn”,c1,c2); printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); printf(“%d %dn”,c1,c2); 運行運行(ynxng)(ynxng)結結果:果: 97 98 97 98第31頁/共86頁第三十一頁,共87頁。例例2.7 2.7 大小寫

24、字母的轉換大小寫字母的轉換(zhunhun) (zhunhun) #include #include void main()void main() char c1,c2 char c1,c2; c1=a; c1=a; c2=b; c2=b; c1=c1-32; c1=c1-32; c2=c2-32; c2=c2-32; printf(“ printf(“c c cc,c1,c2c1,c2);); 運行運行(ynxng)(ynxng)結結果:果: 第32頁/共86頁第三十二頁,共87頁。 2.5 字符型數(shù)據(jù)(shj) 2.5.3 字符數(shù)據(jù)(shj)在內(nèi)存中的存儲形式及其使用方法第33頁/共86頁

25、第三十三頁,共87頁。 2.5 字符(z f)型數(shù)據(jù) 2.5.4 2.5.4 字符字符(z f)(z f)串常量串常量字符字符(z f)(z f)串常量是一對雙撇號括起來的字符串常量是一對雙撇號括起來的字符(z f)(z f)序列序列. .合法的字符合法的字符(z f)(z f)串常量串常量: :“How do you do.”, “CHINA”“How do you do.”, “CHINA”, “a” “a” , “$123.45” “$123.45”可以輸出一個字符可以輸出一個字符(z f)(z f)串,如串,如printf(“How do you do.”)printf(“How do

26、 you do.”);第34頁/共86頁第三十四頁,共87頁。 2.5 字符型數(shù)據(jù)(shj) 2.5.4 字符串常量 是字符常量, “a”是字符串常量,二者不同。 如:假設(jish)被指定為字符變量 :char c c= a; “a” ;c “CHINA”; 結論:不能把一個(y )字符串常量賦給一個(y )字符變量。第35頁/共86頁第三十五頁,共87頁。 +規(guī)定:在每一個字符串常量的結尾加一個 “字符 串結束(jish)標志”,以便系統(tǒng)據(jù)此判斷字符串是否結束(jish)。 +規(guī)定以字符作為字符串結束(jish)標志。 如:如果有一個(y )字符串常量” ,實際上在內(nèi)存中是:CHINA0

27、它占內(nèi)存(ni cn)單元不是個字符,而是個字符,最后一個字符為。但在輸出時不輸出。 2.5 字符型數(shù)據(jù) 2.5.4 字符串常量第36頁/共86頁第三十六頁,共87頁。q2.6布爾型數(shù)據(jù)qboolq值為true和falseq可以當作整數(shù)用( true一般為1,false為0)q把其它類型(lixng)的值轉換為布爾值時,非零值轉換為true,零值轉換為false第37頁/共86頁第三十七頁,共87頁。 2.7 各類數(shù)值(shz)型數(shù)據(jù)間的混合運算 混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型(lixng)的數(shù)據(jù)要

28、先轉換成同一類型(lixng),然后進行運算.說明(shumng): 這種類型轉換是由系統(tǒng)自動進行的。1.1.隱式類型轉換隱式類型轉換第38頁/共86頁第三十八頁,共87頁。2. 2. 強制強制(qingzh)(qingzh)類型轉換運算符類型轉換運算符 可以利用強制可以利用強制(qingzh)(qingzh)類型轉換運算符將一個類型轉換運算符將一個表達式表達式轉換成所需類型。轉換成所需類型。 一般形式一般形式: :(類型名)(表達式)(類型名)(表達式)說明: 表達式應該用括號括起來(q li)。 在強制類型轉換時,得到一個所需類型的中間變量,原來變量的類型未發(fā)生變化。第39頁/共86頁第三

29、十九頁,共87頁。例2.8 強制(qingzh)類型轉換。 #include void main() float x; int i; x=3.6; i=(int)x; printf(x=%f, i=%dn,x,i); 運行運行(ynxng)(ynxng)結果:結果: x x3.6000003.600000, i=3 i=3第40頁/共86頁第四十頁,共87頁。 2.8 運算符和表達式 2.8.1 +運算符和C+表達式簡介 1. +語言(yyn)的運算符有以下幾類:算術運算符 (+ - * / %)關系運算符 (?。┻壿嬤\算符 (!|)位運算符 ( |)賦值運算符 (及其擴展賦值運算符)條件運算

30、符 (?:)逗號運算符 (,)第41頁/共86頁第四十一頁,共87頁。(8)指針運算符 (*和)(9)求字節(jié)數(shù)運算符()(10)強制(qingzh)類型轉換運算符( (類型) )(11)分量運算符(-)(12)下標運算符()(13)其他 (如函數(shù)調(diào)用運算符()第42頁/共86頁第四十二頁,共87頁。2. C+語言的表達式有以下幾類:(1)算術表達式:如2+6.7*3.5+sin(0.5)(2)關系表達式:如x0,y0 & y0 (表示(biosh)x0與y0同時成立,&是邏輯運算符,代表“與”)(4)賦值表達式:如a=5.6(5)逗號表達式:如a=3,y=4,z=8 第43頁/

31、共86頁第四十三頁,共87頁。 2.8.2 算術運算符和算術表達式 1. 基本(jbn)的算術運算符:* (如:結果為;-11/3 結果為-3) (如:的值為;11%-3結果為2)。第44頁/共86頁第四十四頁,共87頁。2. 2. 算術表達式和運算符的優(yōu)先級與結合性算術表達式和運算符的優(yōu)先級與結合性 用算術運算符和括號將運算對象用算術運算符和括號將運算對象( (也稱操作也稱操作(cozu)(cozu)數(shù))連接起來的、符合數(shù))連接起來的、符合+語法規(guī)則的式子,稱為語法規(guī)則的式子,稱為+算術表達式。運算對象包括常量、變量、算術表達式。運算對象包括常量、變量、函數(shù)等。函數(shù)等。 例如例如: : *

32、*.5.5aa 是一個合法的表達式是一個合法的表達式第45頁/共86頁第四十五頁,共87頁。+語言規(guī)定了運算符的優(yōu)先級和結合性。 在表達式求值時,先按運算符的優(yōu)先級別高低(god)次序執(zhí)行,例如先乘除后加減。 +規(guī)定了各種運算符的結合方向(結合性) 算術運算符的結合方向為“自左至右”,即先左后右 。第46頁/共86頁第四十六頁,共87頁。 3. 3. 自增、自減運算符自增、自減運算符 作用是使變量作用是使變量(binling)(binling)的值增或減的值增或減如:如: ,(在使用之前,先使的值加,(在使用之前,先使的值加 (減)(減),(在使用之后,使的值加(,(在使用之后,使的值加( 減

33、)減) 第47頁/共86頁第四十七頁,共87頁。i+i+與+i+i的區(qū)別: 是先執(zhí)行(zhxng)(zhxng)后,再使用的值; 是先使用的值后,再執(zhí)行(zhxng)(zhxng)。例如: ; i i的值先變成4, 4, 再賦給,j,j的值為 ; 先將 i i的值3 3賦給, ,的值為,然后變?yōu)榈?8頁/共86頁第四十八頁,共87頁。注意: (1)自增運算符(),自減運算符(),只能用于變量,而不能用于常量或表達式, (2)和的結合方向是“自右至左”。 (3)自增(減)運算符常用于循環(huán)語句中使循環(huán)變 量自動加。也用于指針變量,使指針指向(zh xin)下一個地址。 (4)使用和時 ,為避免二義

34、性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號,如(i+)+j。第49頁/共86頁第四十九頁,共87頁。2.8.3 關系(gun x)運算和關系(gun x)表達式1.1.關系運算符及其優(yōu)先次序關系運算符及其優(yōu)先次序(cx)(cx) ( (小于小于) )= ( ( (大于大于) )= (= (大于或等于大于或等于) )= (= (等于等于) )!= (!= (不等于不等于) )優(yōu)先級相同(高)優(yōu)先級相同(高)優(yōu)先級相同(低)優(yōu)先級相同(低)說明(shumng):關系運算符的優(yōu)先級低于算術運算符關系運算符的優(yōu)先級高于賦值運算符第50頁/共86頁第五十頁,共87頁。2.2.關系表達式關

35、系表達式用關系運算符將兩個用關系運算符將兩個(lin )(lin )表達式(可以是算術表達式或表達式(可以是算術表達式或 關系表達式,邏輯表達式,賦值表達式,字符表達式)關系表達式,邏輯表達式,賦值表達式,字符表達式) 接起來的式子,稱關系表達式接起來的式子,稱關系表達式例:例:ab,a+bb+c,(a=3)(b=5),ab)(bb,a+bb+c,(a=3)(b=5),ab)(bb”ab”的值為的值為“真真”,表達式的值為,表達式的值為1 1。第51頁/共86頁第五十一頁,共87頁。2.8.4 邏輯(lu j)運算符和邏輯(lu j)表達式1.1.邏輯運算符及其優(yōu)先邏輯運算符及其優(yōu)先(yuxi

36、n)(yuxin)次序次序& (& (邏輯與邏輯與) ) 相當于其他語言中的相當于其他語言中的ANDAND| (| (邏輯或邏輯或) ) 相當于其他語言中的相當于其他語言中的OROR! (! (邏輯非邏輯非) ) 相當于其他語言中的相當于其他語言中的NOTNOT例:例:a&b a&b 若若a,ba,b為真,則為真,則a&ba&b為真。為真。 a|b a|b 若若a,ba,b之一為真,則之一為真,則a|ba|b為真。為真。 !a a 若若a a為真,則為真,則!a!a為假。為假。優(yōu)先(yuxin)次序:!(非)-&()-|()邏輯運算符中的

37、“&”和“|”低于關系運算符,“!”高于算 術運算符第52頁/共86頁第五十二頁,共87頁。2.2.邏輯表達式邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來的式子用邏輯運算符將關系表達式或邏輯量連接起來的式子(sh zi)(sh zi)就就 是邏輯表達式是邏輯表達式邏輯表達式的值應該是一個邏輯量邏輯表達式的值應該是一個邏輯量“真真”或或“假假”。例:例:設設a=4a=4,b=5b=5:!a!a的值為的值為0 a&b0 a&b的值為的值為1 1a|ba|b的值為的值為1 !a|b1 !a|b的值為的值為1 14&0|24&0|2的值為的值為1 1任何非

38、零的數(shù)值任何非零的數(shù)值(shz)被認作被認作“真真”第53頁/共86頁第五十三頁,共87頁。例:53&84-!0 自左向右運算(yn sun) 1&0邏輯值為083邏輯值為1表達式值為0第54頁/共86頁第五十四頁,共87頁。在邏輯表達式的求解中,并不是所有的邏輯運算符都要被執(zhí)行在邏輯表達式的求解中,并不是所有的邏輯運算符都要被執(zhí)行(zhxng)(zhxng)。(1)a&b&c (1)a&b&c 只有只有a a為真時,才需要判斷為真時,才需要判斷b b的值,只有的值,只有a a和和b b都為真時,都為真時, 才需要判斷才需要判斷c c的值。的值。

39、(2)a|b|c (2)a|b|c 只要只要a a為真,就不必判斷為真,就不必判斷b b和和c c的值,只有的值,只有a a為假,才為假,才 判斷判斷b b。a a和和b b都為假才判斷都為假才判斷c c 設a=1,b=2,c=3,d=4, m=1,n=1; 例:(m=ab)&(n=cd)第55頁/共86頁第五十五頁,共87頁。 用邏輯表達式來表示閏年的條件能被4整除,但不能被100整除。能被4整除,又能被400整除答 (year%4=0&year%100!=0)|year%400=0案 值為真(1)是閏年(rnnin),否則為非閏年(rnnin)。第56頁/共86頁第五十六頁

40、,共87頁。 所謂位運算(yn sun),是指對一個數(shù)據(jù)的某些二進制位進行的運算(yn sun)。 規(guī)定最左邊一位為最高位: 位邏輯運算(yn sun)符:按位非 按位與 & 按位或 | 按位異或 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0第57頁/共86頁第五十七頁,共87頁。例 int x=31; 求x 0000000000011111 1111111111100000即:x= - 32例:int x=31;y=-5; 求x&y 0000000000011111& 1111111111111011 0000000000011011即:

41、x&y=27l按位非 0=1 1=0l 舉例(j l):按位與 0&0=0 0&1=0 1&0=0 1&1=1 舉例(j l):第58頁/共86頁第五十八頁,共87頁?!鞍次慌c按位與”運算運算(yn sun)有如下一些有如下一些用途:用途:(1)將數(shù)據(jù)中的某些位清零)將數(shù)據(jù)中的某些位清零(2)測試指定位是)測試指定位是0還是還是1(3)獲得)獲得x指定位的值指定位的值例如:設X為一個字符型變量(8位二進制位),判斷其最低位為0還是1只需:X & 0 x01 即可!X= x x x x x x x x & 0 0 0 0 0 0 0 1 0

42、 0 0 0 0 0 0 x例如:設X是unsigned類型的整數(shù)(16位二進制數(shù)),要求獲取X的低8位只需:X & 0 x00ff 即可!X= x x x x x x x x x x x x x x x x & 0 0 0 0 0 0 0 011 1 1 1 1 1 1 0 0 0 0 0 0 0 0 x x x x x x x x第59頁/共86頁第五十九頁,共87頁。例:int x=31;y=-5; 求x | y 0000000000011111 | 1111111111111011 1111111111111111即:x | y=-1按位或 0|0=0 0|1=1 1|

43、0=1 1|1=1 舉例(j l):“按位或”運算常用于對一個數(shù)據(jù)中的某些(mu xi)位置1。例如:將一個無符號整數(shù)X的第4位置1。只需: X | 0 x10 即可!X= x x x x x x x x x x x x x x x x | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 x x x x x x x x x x x 1 x x x x第60頁/共86頁第六十頁,共87頁。按位異或 00=0 01=1 10=1 11=0 舉例(j l):例:int x=31;y=-5; 求x y 0000000000011111 1111111111111011 11111111

44、11100100即:x | y=-28“按位異或”運算(yn sun)有如下一些用途:(1)使數(shù)據(jù)中的某些位求反 該位與1異或即可(2)對變量清零 XX位位位位&| 01011100000101110110位邏輯(lu j)運算符總結:第61頁/共86頁第六十一頁,共87頁。移位運算符 左移運算符 使用方式:運算對象左移位數(shù) 功能:將運算對象的每個二進制位同時(tngsh)向左移動制定的位數(shù),從左邊移出的高位部分被丟棄,低位部分用0補齊 左移1位相當于該數(shù)乘以2?。▋H對移出的高位不含1的成立) eg. 642 0100 0000 左移2位得 0000 0000 左移比乘法元算快的多,有

45、些C+編譯程序自動將乘2的運算用左移1位來實現(xiàn),將乘2n的冪運算處理為左移n位。例:設 a=15; 求 a 使用方式:運算對象左移位數(shù) 功能:將運算對象的每個二進制位同時向右移動制定的位數(shù),從右邊移出的低位部分被丟棄。 對于無符號(fho)數(shù),左邊高位用0補齊; 對于有符號(fho)數(shù),正數(shù)左邊高位也是補0; 負數(shù)高位補0還是補1和具體的系統(tǒng)有關。 補0 稱為:邏輯右移,補1稱為:算數(shù)右移 例:設 a=15; 求 a20000 0000 0000 1111 左移2位得:0000 0000 0000 0011 即十進制的3例:設a=-50; 求 a2 a : 1111 1111 1100 111

46、0a1: 0111 1111 1110 0111 (邏輯右移(yu y))a1: 1111 1111 1110 0111 (算數(shù)右移(yu y))右移(yu y)1位相當于除以2,右移(yu y)n位相當于除以2n第63頁/共86頁第六十三頁,共87頁。 2.8.6 逗號(duho)運算符和逗號(duho)表達式逗號運算符逗號運算符: :將兩個將兩個(lin )(lin )表達式連接起來表達式連接起來, ,又稱為又稱為“順序求順序求值運算符值運算符”。 如:如:5 5, 一般(ybn)形式: 表達式,表達式求解過程:求解過程: 先求解表達式,再求解表達式。整個逗號表達式的值是表達式的值。 逗號

47、表達式 的值為14第64頁/共86頁第六十四頁,共87頁。例:逗號例:逗號(duho)(duho)表達式表達式* *5 5,* * 一個逗號(duho)表達式又可以與另一個表達式組成一個新的逗號(duho)表達式。 如:(*,*),a+5 第65頁/共86頁第六十五頁,共87頁。 逗號表達式的一般形式可以(ky)擴展為 表達式,表達式,表達式,表達式 它的值為表達式的值。 逗號運算符是所有(suyu)運算符中級別最低的例: (,*) ,*3賦值表達式,將一個(y )逗號表達式的值賦給,的值等于 逗號表達式,包括一個賦值表達式和一個算術表達式,的值為,整個逗號表達式的值為18。 第66頁/共86

48、頁第六十六頁,共87頁。注意: :并不是任何地方出現(xiàn)的逗號都是作為(zuwi)(zuwi)逗號運算符。例如函數(shù)參數(shù)也是用逗號來間隔的。 如: printf(: printf(“%d,%d,%d%d,%d,%d”,a,b,c);,a,b,c);“,”并不是(b shi)一個逗號表達式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c) “(,)”是一個逗號(duho)表達式,它的值等于的值。 第67頁/共86頁第六十七頁,共87頁。 2.8.7 賦值運算(yn sun)和賦值表達式1.1.賦值運算符賦值運算符 = = 作用作用(zuyng)(zuyng):

49、給變量賦值:給變量賦值 eg. int a; eg. int a; a=100 a=100 第68頁/共86頁第六十八頁,共87頁。. .復合的賦值運算符復合的賦值運算符 在賦值符在賦值符“”之前加上其他之前加上其他(qt)(qt)運算符,可以構成運算符,可以構成復合的運算符。復合的運算符。 例:例:第69頁/共86頁第六十九頁,共87頁。 可以這樣理解(lji): a += b (其中a為變量,b為表達式) a + = b(將有下劃線的“a+”移到“=”右側) | a = a + b(在“=”左側補上變量名a) 第70頁/共86頁第七十頁,共87頁。 如果如果(rgu)(rgu)是包含若干項

50、的表達式,則相當于它是包含若干項的表達式,則相當于它有括號。有括號。 例:例: x %= y + 3 x %= y + 3 x %= (y + 3) x %= (y + 3) |_ |_ x = x %(y + 3) x = x %(y + 3) (不要錯寫成(不要錯寫成 x = x % y + 3 )x = x % y + 3 )第71頁/共86頁第七十一頁,共87頁。第72頁/共86頁第七十二頁,共87頁。3.3.賦值表達式賦值表達式 一般形式為:一般形式為: 變量變量 賦值運算符賦值運算符 表達式表達式注意注意(zh y)(zh y):并不是任何對象都可以作為:并不是任何對象都可以作為左

51、值的,表達式和常變量就不能作為左值。左值的,表達式和常變量就不能作為左值。任何左值都可做右值。任何左值都可做右值。第73頁/共86頁第七十三頁,共87頁。 賦值表達式中的“表達式”,又可以(ky)是一個賦值表達式。 例:a=(b=5)分析(fnx)賦值表達式: (a=3*5)=4*3第74頁/共86頁第七十四頁,共87頁。 賦值表達式也可以(ky)包含復合的賦值運算符。 例: a+=a-=a*a (設a=12) 賦值表達式作為表達式的一種,不僅可以出現(xiàn)在賦值語句中,而且可以以表達式形式出現(xiàn)在其他語句(如輸出(shch)語句、循環(huán)語句等)中 。 例:printf(%d,a=b);第75頁/共86

52、頁第七十五頁,共87頁。4 4 賦值過程賦值過程(guchng)(guchng)中的類型轉換中的類型轉換 如果賦值運算符兩側的類型一致如果賦值運算符兩側的類型一致(yzh),則直接進,則直接進行賦值。行賦值。 例:例:i=6 (假設假設i已定義為已定義為int型型) 如果賦值運算符兩側的類型不一致如果賦值運算符兩側的類型不一致(yzh),但都是,但都是數(shù)值型或字符型時,在賦值時要進行類型轉換。類數(shù)值型或字符型時,在賦值時要進行類型轉換。類型轉換是系統(tǒng)自動進行的。型轉換是系統(tǒng)自動進行的。第76頁/共86頁第七十六頁,共87頁。 轉換規(guī)則:轉換規(guī)則: 將浮點型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,

53、先對將浮點型數(shù)據(jù)(包括單、雙精度)賦給整型變量時,先對浮點數(shù)取為整,然后賦予整型變量。浮點數(shù)取為整,然后賦予整型變量。 將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點將整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。數(shù)形式存儲到變量中。 將一個將一個doubledouble型數(shù)據(jù)賦給型數(shù)據(jù)賦給floatfloat變量時,截取其前面變量時,截取其前面7 7位位有效數(shù)字,存放到有效數(shù)字,存放到floatfloat變量的存儲單元變量的存儲單元(cn ch dn yun)(cn ch dn yun)(4 4個字節(jié))中。但應注意數(shù)值范圍不能溢出;將一個個字節(jié))中。但應注意數(shù)值范圍

54、不能溢出;將一個floatfloat型數(shù)據(jù)賦給型數(shù)據(jù)賦給doubledouble變量時,數(shù)值不變,有效位數(shù)擴展到變量時,數(shù)值不變,有效位數(shù)擴展到1616位,位,在內(nèi)存中以在內(nèi)存中以8 8個字節(jié)存儲。個字節(jié)存儲。第77頁/共86頁第七十七頁,共87頁。 轉換規(guī)則:轉換規(guī)則: 字符型數(shù)據(jù)賦給整型變量時,將字符的字符型數(shù)據(jù)賦給整型變量時,將字符的ASCIIASCII碼賦給碼賦給整型變量。整型變量。 將一個占字節(jié)將一個占字節(jié)(z ji)(z ji)多的整型數(shù)據(jù)賦給一個占字多的整型數(shù)據(jù)賦給一個占字節(jié)節(jié)(z ji)(z ji)少的整型變量少的整型變量/ /字符變量時,只將其低字節(jié)字符變量時,只將其低字節(jié)(

55、z ji)(z ji)原封不動地送到該變量原封不動地送到該變量 例:例:i=289;i=289; / /* * 已定義已定義i i為為整型變量整型變量 * */ / c=a; c=a; / /* * 已定義已定義c c為字符為字符變量變量 * */ / c=i; / c=i; /* * 將一個占將一個占2 2字節(jié)字節(jié)(z ji)(z ji)的的intint型數(shù)據(jù)賦給型數(shù)據(jù)賦給charchar型變量型變量 * */ / i=289 i=289 c=33 c=33 將有符號整數(shù)賦值給長度相同的將有符號整數(shù)賦值給長度相同的 無符號整型變量時,按字節(jié)無符號整型變量時,按字節(jié)(z ji)(z ji)原樣

56、賦值。原樣賦值。0 0 0 0 0 0 0 10 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1證賦值后數(shù)值不會發(fā)生變化證賦值后數(shù)值不會發(fā)生變化。第78頁/共86頁第七十八頁,共87頁。例例2.9 有符號整數(shù)賦值給無符號整型變量有符號整數(shù)賦值給無符號整型變量(binling),數(shù)據(jù)會失真。數(shù)據(jù)會失真。 #include void main ( ) unsigned a; /* 定義定義a為無符號整型變量為無符號整型變量(binling) */ int b; /* 定義定義b為有符號整型變量為有符號整型變量(binling) */ b=-1; b a=b; a printf(%un,a); 運行運行(ynxng)(ynxng)結果:結果:429496729542949

溫馨提示

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

最新文檔

評論

0/150

提交評論