版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)與運算數(shù)據(jù)與運算u 計算機如何存儲數(shù)據(jù)?計算機如何存儲數(shù)據(jù)?u C語言如何表示數(shù)據(jù)?語言如何表示數(shù)據(jù)?u 如何命令計算機進行數(shù)值計算?如何命令計算機進行數(shù)值計算?2u內(nèi)存內(nèi)存( (主存主存):):存放存放正在正在/ /準(zhǔn)備運行的程序和數(shù)準(zhǔn)備運行的程序和數(shù)據(jù)據(jù), ,容量從幾百容量從幾百KBKB到幾百到幾百MBMB甚至幾甚至幾GB,GB,數(shù)據(jù)數(shù)據(jù)( (及程序及程序) )通常被分塊存放通常被分塊存放uCPUCPU中的寄存器中的寄存器: :每個寄存器能夠存放固定長每個寄存器能夠存放固定長度的數(shù)據(jù)度的數(shù)據(jù), ,寄存器數(shù)量很小寄存器數(shù)量很小, ,速度很快速度很快 u外存外存( (輔存輔存):):以文件
2、的形式長期存放大量程序以文件的形式長期存放大量程序和數(shù)據(jù)和數(shù)據(jù), ,外存上的程序和數(shù)據(jù)只有調(diào)進內(nèi)存后才能外存上的程序和數(shù)據(jù)只有調(diào)進內(nèi)存后才能使用使用計算機中存儲數(shù)據(jù)的設(shè)備3不同的不同的CPU中含有不同數(shù)中含有不同數(shù)量的寄存器量的寄存器, ,以以二進制二進制形形式存放數(shù)據(jù)。每個寄存器式存放數(shù)據(jù)。每個寄存器有固定的名稱和容量有固定的名稱和容量( (二二進制位數(shù)進制位數(shù)) )在寄存器中存儲數(shù)據(jù)把二進制數(shù)把二進制數(shù)1001111010011110放到放到ALAL中中1 0 0 1 1 1 1 01 0 0 1 1 1 1 0例如,例如,intelintel公司的奔騰公司的奔騰CPUCPU中有中有一個一
3、個8 8位寄存器位寄存器ALALAL你知道此時你知道此時ALAL中的數(shù)據(jù)代中的數(shù)據(jù)代表什么含義嗎?表什么含義嗎?4如何組織內(nèi)存u 1 1、內(nèi)存以、內(nèi)存以字節(jié)字節(jié)為基本單位為基本單位u 2 2、內(nèi)存中有很多字節(jié)、內(nèi)存中有很多字節(jié)u 3 3、存在的問題:、存在的問題:如何區(qū)分如何區(qū)分“這個字節(jié)這個字節(jié)”和和“那個字節(jié)那個字節(jié)”?一個字節(jié)的容量很小,一字一個字節(jié)的容量很小,一字節(jié)放不下的數(shù)據(jù)如何處理?節(jié)放不下的數(shù)據(jù)如何處理?(解答見后)(解答見后)5內(nèi)存地址內(nèi)存字節(jié)的編號每個字節(jié)確定一個編號每個字節(jié)確定一個編號, ,從從0編起編起, ,依次安排。結(jié)構(gòu)上形成梯子狀的內(nèi)存圖。依次安排。結(jié)構(gòu)上形成梯子狀的
4、內(nèi)存圖。習(xí)慣上習(xí)慣上, ,畫內(nèi)存圖時各個字節(jié)右邊寫地址;畫內(nèi)存圖時各個字節(jié)右邊寫地址;0123456內(nèi)部填寫其中存放的數(shù)據(jù)值;內(nèi)部填寫其中存放的數(shù)據(jù)值;0 0 0 0 1 0 1 11 1 0 0 0 1 0 10 1 0 1 1 0 1 10 1 1 0 1 1 1 00 1 1 0 0 0 1 00 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 1 0 1 0 0 00 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 1 0 1 0 0 0將來還可以給各個字節(jié)命名。將來還可以給各個字節(jié)命名。c1c
5、2abt6多字節(jié)聯(lián)合使用存放一個數(shù)據(jù)一個字節(jié)只能存放一個字節(jié)只能存放8 8位二進制數(shù)據(jù),為了存放位二進制數(shù)據(jù),為了存放1616位二進制數(shù),可以把連續(xù)兩位二進制數(shù),可以把連續(xù)兩個字節(jié)聯(lián)合在一起捆綁使用。個字節(jié)聯(lián)合在一起捆綁使用。100010001001100110021002100310031004100410051005 地址為地址為10011001的高字節(jié)的高字節(jié) 地址為地址為10001000的低字節(jié)的低字節(jié)地址:地址:1005 1004 1003 10021005 1004 1003 1002類似地,可以把連續(xù)類似地,可以把連續(xù)4 4個字節(jié)聯(lián)合使用。個字節(jié)聯(lián)合使用。通常,把偶地址開始的連續(xù)
6、兩個字節(jié)聯(lián)合使用,把地址是通常,把偶地址開始的連續(xù)兩個字節(jié)聯(lián)合使用,把地址是4 4的倍數(shù)起的連的倍數(shù)起的連續(xù)續(xù)4 4個字節(jié)聯(lián)合在一起。個字節(jié)聯(lián)合在一起。7內(nèi)存圖實用畫法如圖能夠表示以下含義如圖能夠表示以下含義1 1、在地址為、在地址為10001000的內(nèi)存字節(jié)中存的內(nèi)存字節(jié)中存放了一個數(shù)據(jù)放了一個數(shù)據(jù)3535;2 2、地址、地址10021002和和10031003的兩個字節(jié)聯(lián)的兩個字節(jié)聯(lián)合使用存放數(shù)據(jù)合使用存放數(shù)據(jù)14271427;3 3、從地址、從地址10041004開始的連續(xù)開始的連續(xù)4 4個字節(jié)個字節(jié)聯(lián)合使用存放數(shù)據(jù)聯(lián)合使用存放數(shù)據(jù)2.718282.71828。注意:注意:為了為了“對齊
7、對齊”,一般不把,一般不把地址為地址為10011001和和10021002的兩個字節(jié)的兩個字節(jié)聯(lián)合使用。寧可讓地址為聯(lián)合使用。寧可讓地址為10011001的字節(jié)空閑。的字節(jié)空閑。10001001100210043514272.718288提 問1 1、如果曾經(jīng)命令計算機、如果曾經(jīng)命令計算機“把地址把地址10021002和和10031003的兩個字節(jié)聯(lián)合使用并存放的兩個字節(jié)聯(lián)合使用并存放數(shù)據(jù)數(shù)據(jù)1427”1427”,還可以再命令計算機,還可以再命令計算機“取地址取地址10021002字節(jié)的數(shù)據(jù)字節(jié)的數(shù)據(jù)”嗎?嗎?即能否在某一時刻聯(lián)合使用,另即能否在某一時刻聯(lián)合使用,另一時刻分別使用?一時刻分別使
8、用?10001001100210043514272.718282 2、這時如果命令計算機把數(shù)據(jù)、這時如果命令計算機把數(shù)據(jù)2828放到放到地址為地址為10031003的內(nèi)存字節(jié),會產(chǎn)生什的內(nèi)存字節(jié),會產(chǎn)生什么樣的效果?么樣的效果?3 3、計算機怎么知道、計算機怎么知道10021002起的兩個字節(jié)起的兩個字節(jié)放的是整數(shù),而放的是整數(shù),而10041004起的起的4 4個字節(jié)個字節(jié)放的是實數(shù)?放的是實數(shù)?91 1、普通十進制寫法、普通十進制寫法35 35 ,-78 -78 ,24649 24649 等等2 2、十六進制寫法、十六進制寫法( (通常不用負數(shù)通常不用負數(shù)) )0 x8A 0 x8A ,0X
9、35 , 0 xABC 0X35 , 0 xABC ,-0XAA -0XAA 等等3 3、八進制寫法、八進制寫法( (通常不用負數(shù)通常不用負數(shù)) )025 025 ,0123 0123 ,077 077 ,-033 -033 等等注意!注意! 25 25 與與 025 025 不等值不等值C語言程序中的整數(shù)寫法10如何把如何把105105存放到如上的存放到如上的1 1字節(jié)存儲器中?字節(jié)存儲器中?最簡單的方法:用二進制直接存放最簡單的方法:用二進制直接存放105105對應(yīng)的二進制對應(yīng)的二進制0110100101101001問題:問題:能夠存放的最大能夠存放的最大/ /最小數(shù)是多少?最小數(shù)是多少?
10、如何存放負數(shù)?如何存放負數(shù)?(1)(1)有沒有其它存放方法?有沒有其它存放方法?用1字節(jié)存放整數(shù)0 1 1 0 1 0 0 10 1 1 0 1 0 0 1補碼補碼現(xiàn)在最常用的數(shù)據(jù)存儲形式。現(xiàn)在最常用的數(shù)據(jù)存儲形式。如上的存放形式稱為無符號數(shù),補碼用如上的存放形式稱為無符號數(shù),補碼用于存儲帶符號數(shù)于存儲帶符號數(shù)11如何把如何把-105-105存放到如上的存放到如上的1 1字節(jié)存儲器中?字節(jié)存儲器中?補碼存儲規(guī)則:補碼存儲規(guī)則:確定位數(shù)確定位數(shù)88位位確定正負確定正負非負整數(shù)直接存儲,非負整數(shù)直接存儲,0 0127127負數(shù)的處理:負數(shù)的處理:取絕對值,寫成二進制:取絕對值,寫成二進制:0110
11、100101101001所有位取反:所有位取反:1001011010010110最末位加最末位加1 1:1001011110010111(1)(1)問題:問題:1 1字節(jié)、補碼,能夠存放的最小數(shù)是多字節(jié)、補碼,能夠存放的最小數(shù)是多少?少?用1字節(jié)、補碼存放整數(shù)1 0 0 1 0 1 1 11 0 0 1 0 1 1 112如上的如上的1 1字節(jié)存儲器中存放了一個二進制整數(shù),對字節(jié)存儲器中存放了一個二進制整數(shù),對應(yīng)的十進制是多少?應(yīng)的十進制是多少?二進制對應(yīng)的整數(shù)是多少?1 1 0 1 1 0 1 11 1 0 1 1 0 1 1規(guī)則:規(guī)則:判斷正負判斷正負正數(shù)簡單,略;負數(shù),先寫下正數(shù)簡單,略
12、;負數(shù),先寫下“-”-”所有位取反:所有位取反:0010010000100100最末位加最末位加1 1:0010010100100101(1)(1)二轉(zhuǎn)十得結(jié)果:二轉(zhuǎn)十得結(jié)果: -37-37問題:你是如何知道存放形式是補碼?問題:你是如何知道存放形式是補碼?13VC支持的整數(shù)存儲形式單字節(jié)、無符號單字節(jié)、無符號 0 0 255255單字節(jié)、帶符號單字節(jié)、帶符號 -128 -128 +127+127雙字節(jié)、無符號雙字節(jié)、無符號 0 0 6553565535雙字節(jié)、帶符號雙字節(jié)、帶符號 -32768 -32768 +32767+327674 4字節(jié)、無符號字節(jié)、無符號 0 0 2 23232-1-
13、14 4字節(jié)、帶符號字節(jié)、帶符號 -2-23131 +2+23131-1-1問題:問題:如何區(qū)分一個數(shù)據(jù)是用哪種存儲形式?如何區(qū)分一個數(shù)據(jù)是用哪種存儲形式?如何命令計算機:如何命令計算機:“準(zhǔn)備一個雙字節(jié)、帶符號準(zhǔn)備一個雙字節(jié)、帶符號存儲容器存儲容器”答案見答案見“常量與變量常量與變量”14如圖是把內(nèi)存中兩字節(jié)聯(lián)合使用存放整數(shù)如圖是把內(nèi)存中兩字節(jié)聯(lián)合使用存放整數(shù)的例子,此時仍然有兩種存放形式:的例子,此時仍然有兩種存放形式:1 1、存放非負整數(shù)、存放非負整數(shù)2 2、存放帶符號數(shù)、存放帶符號數(shù)由于例子中存放的由于例子中存放的是正數(shù),存放形式是正數(shù),存放形式相同相同雙字節(jié)聯(lián)合使用存放整數(shù)01101
14、101 101100112600315IEEE754IEEE754標(biāo)準(zhǔn)中關(guān)于以標(biāo)準(zhǔn)中關(guān)于以4 4字節(jié)和字節(jié)和8 8字節(jié)存儲單元存儲字節(jié)存儲單元存儲實數(shù)的存儲方式被廣泛應(yīng)用于計算機中。實數(shù)的存儲方式被廣泛應(yīng)用于計算機中。數(shù)符數(shù)符(1(1位位) ):表示整個實數(shù)的正負,:表示整個實數(shù)的正負,0 0正正1 1負負階碼階碼(8(8位位) ):整數(shù),記作:整數(shù),記作E E,表示,表示“尾數(shù)尾數(shù)2 2E E”尾數(shù)尾數(shù)(23(23位位) ):是:是“1.1.* * * * *”的小數(shù)部分的小數(shù)部分4字節(jié)存儲實數(shù)31 24 16 8 031 24 16 8 0數(shù)符數(shù)符 階碼階碼 尾數(shù)尾數(shù) 1611000001
15、,11110011,00000000,00000000 11000001,11110011,00000000,00000000 數(shù)符為數(shù)符為1 1,表示負數(shù),表示負數(shù) 階碼為階碼為1000001110000011,對應(yīng)十進制的,對應(yīng)十進制的131131,減,減127127后后得到得到4 4,即階碼為,即階碼為4 4 尾數(shù)為尾數(shù)為1.1.111001100(111001100(注意注意“1.”1.”并不存儲并不存儲) )由于階碼是由于階碼是4 4,這表示把尾數(shù)乘以,這表示把尾數(shù)乘以2 24 4,可以通過把,可以通過把尾數(shù)中的小數(shù)點向右移動尾數(shù)中的小數(shù)點向右移動4 4位實現(xiàn),從而得到位實現(xiàn),從而得
16、到二進制的二進制的11110.011000000000000000011110.0110000000000000000,相應(yīng),相應(yīng)的十進制數(shù)是的十進制數(shù)是30.37530.375,由于數(shù)符位上是,由于數(shù)符位上是1 1,則,則這這4 4個字節(jié)存儲的實數(shù)是個字節(jié)存儲的實數(shù)是-30.375 -30.375 浮點數(shù):實數(shù)的存儲形式17以以4 4字節(jié)存儲實數(shù)字節(jié)存儲實數(shù)0.006250.00625,各個二進制位如何?,各個二進制位如何? 0.0062500.006250,所以數(shù)符位為,所以數(shù)符位為0 0; 0.006250.00625對應(yīng)的二進制數(shù)是一個循環(huán)小數(shù),值對應(yīng)的二進制數(shù)是一個循環(huán)小數(shù),值為為0
17、.00000001100110011000.0000000110011001100。把小數(shù)點向。把小數(shù)點向右移動右移動8 8位后得位后得1.1.10011001100110011001001100110011001100,使得整數(shù)部分是使得整數(shù)部分是1 1,“1.”1.”不存儲,故尾數(shù)是不存儲,故尾數(shù)是1001100110011001100110110011001100110011001101;( (四舍五入四舍五入) ) 對尾數(shù)的小數(shù)點向右移動了對尾數(shù)的小數(shù)點向右移動了8 8位,階碼部分的位,階碼部分的值為值為(-8)+127=119(-8)+127=119,對應(yīng)的二進制是,對應(yīng)的二進制是0
18、111011101110111; 所以,全部的所以,全部的3232位二進制是:位二進制是:0 00111011,10111011,11001100,11001100,110011011001100,11001100,11001101浮點數(shù):實數(shù)的存儲形式18數(shù)據(jù)類型數(shù)據(jù)類型某個數(shù)據(jù)集合中各元素的共有特征。某個數(shù)據(jù)集合中各元素的共有特征。數(shù)據(jù)類型決定:數(shù)據(jù)類型決定:存儲一個該類型的數(shù)據(jù)需要幾個字節(jié)存儲一個該類型的數(shù)據(jù)需要幾個字節(jié)數(shù)據(jù)的存儲形式:各二進制位的含義如何數(shù)據(jù)的存儲形式:各二進制位的含義如何數(shù)據(jù)能夠進行哪些計算數(shù)據(jù)能夠進行哪些計算/處理處理(1)C語言中有若干寫法表示數(shù)據(jù)類型,見下頁。語
19、言中有若干寫法表示數(shù)據(jù)類型,見下頁。什么是數(shù)據(jù)類型19類型寫法類型寫法字節(jié)數(shù)字節(jié)數(shù) 含義含義signed char 1帶符號整數(shù)帶符號整數(shù)unsigned char 1無符號整數(shù)無符號整數(shù)signed short int 2帶符號整數(shù)帶符號整數(shù)unsigned short int 2無符號整數(shù)無符號整數(shù)signed int 4帶符號整數(shù)帶符號整數(shù)signed long int 4帶符號長整數(shù)帶符號長整數(shù)unsigned int 4無符號整數(shù)無符號整數(shù)unsigned long int 4無符號長整數(shù)無符號長整數(shù)float 4單精度實數(shù)單精度實數(shù)double 8雙精度實數(shù)雙精度實數(shù)注:注:VC+
20、6.0版本適用版本適用有關(guān)數(shù)值的數(shù)據(jù)類型(部分)20保留字保留字具有特定含義具有特定含義/ /功能的字母組合功能的字母組合標(biāo)準(zhǔn)標(biāo)準(zhǔn)C C語言共有語言共有3232個保留字,如下:個保留字,如下:C語言的保留字autoautobreakbreakcasecasecharcharconstconstcontinuecontinuedefaultdefaultdododoubledoubleelseelseenumenumexternexternforforfloatfloatgotogotoififintintlonglongregisterregisterreturnreturnshortshor
21、tsignedsignedsizeofsizeofstaticstaticstructstructswitchswitchtypedeftypedefunionunionunsignedunsignedvolatilevolatilevoidvoidwhilewhile21定義:常量定義:常量-程序中所寫的數(shù)據(jù)程序中所寫的數(shù)據(jù) 變量變量-程序運行過程中存儲數(shù)據(jù)的程序運行過程中存儲數(shù)據(jù)的存儲單元存儲單元問題:問題:1. 如何區(qū)分常量的類型?如何區(qū)分常量的類型?2. 如何命令計算機準(zhǔn)備一個變量?如何命令計算機準(zhǔn)備一個變量?3. 能不能用能不能用1 1個字節(jié)個字節(jié)( (或者或者3 3個字節(jié)、個字節(jié)、
22、4 4個字節(jié)個字節(jié)) )存存放整數(shù)?放整數(shù)?4. 變量有什么作用?變量有什么作用?5. 如何對變量進行操作?如何對變量進行操作?(見后頁)(見后頁)常量與變量22定義:常量定義:常量-程序中所寫的數(shù)據(jù)程序中所寫的數(shù)據(jù) 整數(shù)可以用三種數(shù)制,實數(shù)則只用十進制整數(shù)可以用三種數(shù)制,實數(shù)則只用十進制數(shù)值常量的末尾可以加上字母表示類型,但通數(shù)值常量的末尾可以加上字母表示類型,但通常不加字母,而是由計算機自動處理常不加字母,而是由計算機自動處理 實數(shù)除了常規(guī)寫法外,還有科學(xué)記數(shù)法:實數(shù)除了常規(guī)寫法外,還有科學(xué)記數(shù)法: 比如比如1 1光年大約是光年大約是9.469.4610101515米,一個氫原子的質(zhì)量米,
23、一個氫原子的質(zhì)量是是1.6731.6731010-24-24克,其中的數(shù)據(jù)在克,其中的數(shù)據(jù)在C C語言中分別寫作:語言中分別寫作:9.46e159.46e15和和1.673E-241.673E-24即即: a: a1010b b在在C C語言中寫作語言中寫作aEbaEb。1 1、“E”E”可以大寫也可以小寫;可以大寫也可以小寫;2 2、a a可正可負,可以是小數(shù)形式;可正可負,可以是小數(shù)形式;3 3、b b可以是正數(shù)也可以是負數(shù),但必須是整數(shù)??梢允钦龜?shù)也可以是負數(shù),但必須是整數(shù)。數(shù)值常量通常不需要指明類型23如何命令計算機準(zhǔn)備一個變量?如何命令計算機準(zhǔn)備一個變量?稱為稱為“變變量定義量定義”
24、、“變量聲明變量聲明”變量定義格式變量定義格式A:數(shù)據(jù)類型數(shù)據(jù)類型 變量名;變量名;例:例:int vx;int vx;含義含義/ /功能:命令計算機準(zhǔn)備一個名為功能:命令計算機準(zhǔn)備一個名為vxvx的變量,的變量,用于用于( (其中可以其中可以) )存放一個存放一個帶符號帶符號整數(shù)。這是整數(shù)。這是“signed int vx”signed int vx”的省略形式。的省略形式。變量(variable)241 1、可以用作變量名的符號:字母、數(shù)字、下劃、可以用作變量名的符號:字母、數(shù)字、下劃線線“_”_”;2 2、數(shù)字不能開頭;、數(shù)字不能開頭;3 3、長度有一定限制(根據(jù)不同的系統(tǒng)而定);、長度
25、有一定限制(根據(jù)不同的系統(tǒng)而定);4 4、大寫字母和小寫字母是不同的符號,、大寫字母和小寫字母是不同的符號,“A12”A12”和和“a12”a12”是不同的兩個名字;是不同的兩個名字;5 5、“保留字保留字”不能用作變量名。不能用作變量名。 簡化后的規(guī)定:簡化后的規(guī)定:“字母開頭的字母數(shù)字串字母開頭的字母數(shù)字串”。 適用于其它需要命名的地方。適用于其它需要命名的地方。變量(標(biāo)識符)命名規(guī)則251.1.變量是存放數(shù)據(jù)的變量是存放數(shù)據(jù)的“容器容器”,該,該“容器容器”的大?。ㄕ嫉拇笮。ㄕ紦?jù)字節(jié)數(shù))和其中如何存放數(shù)據(jù)由定義變量時的據(jù)字節(jié)數(shù))和其中如何存放數(shù)據(jù)由定義變量時的“數(shù)據(jù)類型數(shù)據(jù)類型”確定。確
26、定。2.2.用格式用格式A A定義變量僅僅是通知計算機準(zhǔn)備定義變量僅僅是通知計算機準(zhǔn)備“容器容器”,而沒有說明是否要求計算機在而沒有說明是否要求計算機在“容器容器”中存放內(nèi)容。中存放內(nèi)容。對此計算機按兩種情況處理,一是保持該對此計算機按兩種情況處理,一是保持該“容器容器”中原有的內(nèi)容不變,二是在其中各個二進制位填中原有的內(nèi)容不變,二是在其中各個二進制位填0 0。3.3.使用變量之前必須準(zhǔn)備容器使用變量之前必須準(zhǔn)備容器定義變量,定義變量,“先定義先定義后使用后使用”是基本規(guī)則。是基本規(guī)則。4.4.定義變量時使用的類型可以是如同定義變量時使用的類型可以是如同intint的的C C語言固有數(shù)語言固有
27、數(shù)據(jù)類型,也可以是自定義類型。據(jù)類型,也可以是自定義類型。注意:可以說注意:可以說“變量中存放的數(shù)據(jù)變量中存放的數(shù)據(jù)”、“變量占若干字變量占若干字節(jié)節(jié)”、“存儲某個類型的數(shù)據(jù)需要幾字節(jié)存儲某個類型的數(shù)據(jù)需要幾字節(jié)”,而不,而不要說要說“某類型占幾字節(jié)某類型占幾字節(jié)”關(guān)于變量定義的說明26實型變量用于存放實數(shù)。實型變量用于存放實數(shù)。C C語言中表示語言中表示“實數(shù)類型實數(shù)類型”的保的保留字是留字是“floatfloat”和和“doubledouble”例如,例如,float v1 ;double v2 ;floatfloat類型的變量類型的變量v1v1以連續(xù)以連續(xù)4 4個字節(jié)存放實數(shù),能夠存放個
28、字節(jié)存放實數(shù),能夠存放約約-10-10383810103838的數(shù)據(jù),支持的數(shù)據(jù),支持6 67 7個十進制有效數(shù)字。個十進制有效數(shù)字。doubledouble類型的變量類型的變量v2v2用連續(xù)用連續(xù)8 8個字節(jié)存放實數(shù),能夠存放個字節(jié)存放實數(shù),能夠存放約約-10-103083081010308308的數(shù)據(jù),支持的數(shù)據(jù),支持14141515個有效數(shù)字。個有效數(shù)字。如果需要更大的范圍和更多的有效數(shù)字如果需要更大的范圍和更多的有效數(shù)字,C,C語言還有語言還有l(wèi)ong long doubledouble類型,以類型,以1616個字節(jié)存放實數(shù)。個字節(jié)存放實數(shù)。用float或double定義實型變量27定
29、義多個變量在程序中需要使用多個變量時可以多次使用格式在程序中需要使用多個變量時可以多次使用格式A A,例如:,例如: double vadouble va; double vb;double vb; double vc; double vc;定義多個同類型的變量時,可以使用下面的格式:定義多個同類型的變量時,可以使用下面的格式: 變量定義格式變量定義格式B B:數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1 1,變量名,變量名2 2,變量名,變量名n n;例如上面定義三個變量的寫法可以寫作:例如上面定義三個變量的寫法可以寫作:double va,vb,vc;double va,vb,vc;28變量的初值定義
30、變量就是準(zhǔn)備定義變量就是準(zhǔn)備“容器容器”。在準(zhǔn)備。在準(zhǔn)備“容器容器”的同時可以命的同時可以命令計算機把一個數(shù)據(jù)存放在令計算機把一個數(shù)據(jù)存放在“容器容器”當(dāng)中作為變量的初值。當(dāng)中作為變量的初值。這時需要使用格式這時需要使用格式C C變量定義格式變量定義格式C C:數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名 = = 初值;初值;例如:例如:double pi=3.14159;double pi=3.14159;定義變量的幾種形式經(jīng)常會混合使用,例如:定義變量的幾種形式經(jīng)常會混合使用,例如:double vx,pi=3.14159,vy,e=2.71828;double vx,pi=3.14159,vy,e=2
31、.71828;29關(guān)于變量初值的規(guī)定在在TC2.0/TC3.0中,定義變量的初值必須是中,定義變量的初值必須是常量常量或常量構(gòu)成的計算式或常量構(gòu)成的計算式。例如例如 :int va=1 ; double vb=3.14*4 ; 以下是錯誤的寫法:以下是錯誤的寫法:double va=1.9 , vb=va*3.14;注意注意:在高版本的:在高版本的C語言系統(tǒng),如語言系統(tǒng),如VC+,已經(jīng),已經(jīng)取消了取消了“初值必須是常量初值必須是常量”的限制。即如上定義的限制。即如上定義變量變量vb的寫法在的寫法在TC是是錯誤的,在是是錯誤的,在VC中是對的。中是對的。30變量定義與內(nèi)存分配對于變量定義,計算機
32、在運行程序時會相應(yīng)地安排一個或幾對于變量定義,計算機在運行程序時會相應(yīng)地安排一個或幾個字節(jié)的內(nèi)存作為該變量對應(yīng)的存儲空間。個字節(jié)的內(nèi)存作為該變量對應(yīng)的存儲空間。例如例如 :int va=1 , vb ; float vx=3.14 ;1、每個程序在運行時有相應(yīng)的內(nèi)存、每個程序在運行時有相應(yīng)的內(nèi)存區(qū)域;區(qū)域;2、初始狀態(tài)下內(nèi)存區(qū)域的數(shù)據(jù)區(qū)中、初始狀態(tài)下內(nèi)存區(qū)域的數(shù)據(jù)區(qū)中并沒有安排變量,這時數(shù)據(jù)區(qū)各個并沒有安排變量,這時數(shù)據(jù)區(qū)各個字節(jié)中的數(shù)據(jù)是計算機隨意安排的;字節(jié)中的數(shù)據(jù)是計算機隨意安排的;3、對于每個變量定義,計算機在數(shù)、對于每個變量定義,計算機在數(shù)據(jù)區(qū)中依次分配對應(yīng)的內(nèi)存單元。據(jù)區(qū)中依次分配
33、對應(yīng)的內(nèi)存單元。程序可用的的內(nèi)存區(qū)域程序可用的的內(nèi)存區(qū)域X XX XX XX XX XX XX XX XX XX XX XX XX XX Xva1vbvx3.1431對于前述問題的解答對于前述問題的解答變量有什么作用?變量有什么作用? 程序需要使用和處理的數(shù)據(jù)很多,因而需要程序需要使用和處理的數(shù)據(jù)很多,因而需要定義一些變量,用于定義一些變量,用于臨時臨時存儲數(shù)據(jù),以供在存儲數(shù)據(jù),以供在需要的時候取出使用。需要的時候取出使用。如何對變量進行操作?如何對變量進行操作?賦值賦值-把數(shù)據(jù)送入變量中保存把數(shù)據(jù)送入變量中保存取值取值-從變量中取出數(shù)據(jù)從變量中取出數(shù)據(jù)使用變量/訪問變量32對變量賦值是對變量
34、賦值是C C語言最基本的命令之一。語言最基本的命令之一。賦值語句格式:賦值語句格式:變量名變量名 = = 表達式表達式 ;含義含義/ /功能:功能:把表達式(即計算式,把表達式(即計算式,一定有計算結(jié)果一定有計算結(jié)果)的)的計算結(jié)果送到變量所對應(yīng)的內(nèi)存中(簡述為計算結(jié)果送到變量所對應(yīng)的內(nèi)存中(簡述為“把計算結(jié)把計算結(jié)果送到變量中果送到變量中”)。)。例如:例如:int va;va = 27*4-56 ;賦 值331 1、語句、語句CC語言中一條完整的命令稱為一條語語言中一條完整的命令稱為一條語句;賦值語句是句;賦值語句是C C語言中最常用的語句。語言中最常用的語句。2 2、賦值號、賦值號“=”
35、=”具有方向性,把右邊的數(shù)據(jù)送到具有方向性,把右邊的數(shù)據(jù)送到左邊指定的存儲單元。賦值語句不是方程。方左邊指定的存儲單元。賦值語句不是方程。方程中的程中的“=”=”表示左右相等,不具有方向性,表示左右相等,不具有方向性,因此方程左右兩邊可以交換位置。因此方程左右兩邊可以交換位置。3 3、賦值語句中所使用的變量必須是已經(jīng)定義的變、賦值語句中所使用的變量必須是已經(jīng)定義的變量,即量,即“先定義后使用先定義后使用”。4 4、對變量再次賦值時,、對變量再次賦值時,“以新代舊以新代舊”原則,并且原則,并且不需要不需要“倒空倒空”操作。操作。賦值語句34程序中任何需要使用數(shù)據(jù)的地方如果不直接寫數(shù)據(jù),程序中任何
36、需要使用數(shù)據(jù)的地方如果不直接寫數(shù)據(jù),而是寫變量名,則是從指定變量中取出數(shù)據(jù)。而是寫變量名,則是從指定變量中取出數(shù)據(jù)。對變量的任何使用都必須遵守對變量的任何使用都必須遵守“先定義后使用先定義后使用”的的基本原則?;驹瓌t。例如,有如下一組操作:例如,有如下一組操作:int a = 12 , b = 7 , t ;double x , y ;t = a + b 2 ;x = a + 1 ;y = x / 4.0 ;畫內(nèi)存圖,說明操作過程,強調(diào)先后次序。畫內(nèi)存圖,說明操作過程,強調(diào)先后次序。從變量中取值35概念:變量是程序運行過程中存儲數(shù)據(jù)的存儲單元。變量是概念:變量是程序運行過程中存儲數(shù)據(jù)的存儲單
37、元。變量是存放數(shù)據(jù)的存放數(shù)據(jù)的“容器容器”屬性:屬性:1. 1. 變量名,編寫程序時用以區(qū)分各個變量變量名,編寫程序時用以區(qū)分各個變量2. 2. 變量在計算機中的位置,目前只討論內(nèi)存中的變量變量在計算機中的位置,目前只討論內(nèi)存中的變量3. 3. 變量的類型,決定字節(jié)數(shù)和存儲方式,以及能夠進行什變量的類型,決定字節(jié)數(shù)和存儲方式,以及能夠進行什么樣的計算么樣的計算/ /處理處理4. 4. 變量的當(dāng)前值變量的當(dāng)前值規(guī)則:規(guī)則:先定義后使用先定義后使用取值不改變其中存儲的數(shù)據(jù)取值不改變其中存儲的數(shù)據(jù)可以多次賦值可以多次賦值關(guān)于變量的小結(jié)36關(guān)于整數(shù)的運算符及運算規(guī)則:關(guān)于整數(shù)的運算符及運算規(guī)則:+-*
38、/%關(guān)于實數(shù)的運算符:關(guān)于實數(shù)的運算符:+-*/運算符運算符優(yōu)先級優(yōu)先級-通俗地說,通俗地說,“先乘除后加減先乘除后加減”改變運算次序的方法改變運算次序的方法- - ( )數(shù)值數(shù)據(jù)的基本運算示例:示例:int a = 6 , b = 4 , c , d ;c = a + b / 3 ;d = ( a + b ) / 3 ;d = d + 2 ;執(zhí)行了三條賦值語句之后,變量執(zhí)行了三條賦值語句之后,變量c c、d d的值各是多少?的值各是多少?同類型數(shù)據(jù)運算同類型數(shù)據(jù)運算37u 對于對于+ +、- -、* *、/ /等算術(shù)運算符:等算術(shù)運算符:兩邊的數(shù)據(jù)類型不同時,兩邊的數(shù)據(jù)類型不同時,“短短長長
39、”、“整整實實”、“floatfloatdouble”double”;u 對于賦值號:變量對應(yīng)字節(jié)數(shù)多,而右邊表達對于賦值號:變量對應(yīng)字節(jié)數(shù)多,而右邊表達式計算結(jié)果的數(shù)據(jù)類型對應(yīng)字節(jié)數(shù)少,則把計式計算結(jié)果的數(shù)據(jù)類型對應(yīng)字節(jié)數(shù)少,則把計算結(jié)果進行等值轉(zhuǎn)換后再送到變量中;反之,算結(jié)果進行等值轉(zhuǎn)換后再送到變量中;反之,采取采取“截斷截斷”處理方式。處理方式。自動類型轉(zhuǎn)換示例:示例:int a = 8 , b = 4 , t , k ;float x ;double y ;t = x * 7 / 5 + b % 3 ;k = 7 / 5 * x + b % 5 ;x = a / 5.0 ;y = x
40、* x ;計算機只做計算機只做double型的實數(shù)運算型的實數(shù)運算38當(dāng)賦值號左側(cè)的變量占據(jù)字節(jié)數(shù)多而右側(cè)計算結(jié)果對應(yīng)字當(dāng)賦值號左側(cè)的變量占據(jù)字節(jié)數(shù)多而右側(cè)計算結(jié)果對應(yīng)字節(jié)數(shù)少時,先進行等值轉(zhuǎn)換,再把結(jié)果存放到賦值號左節(jié)數(shù)少時,先進行等值轉(zhuǎn)換,再把結(jié)果存放到賦值號左側(cè)的變量。設(shè)有下列變量定義:側(cè)的變量。設(shè)有下列變量定義:char dt1char dt1;short int dt2short int dt2;u 把字符數(shù)據(jù)送到整型變量中,例如把字符數(shù)據(jù)送到整型變量中,例如dt2 = dt1 dt2 = dt1 ;賦值語句中的轉(zhuǎn)換:短長6565dt1dt1dt2dt20100,00010100,000165650100,00010100,00010000,00000000,0000Q: 符號擴展問題符號擴展問題39賦值語句中的轉(zhuǎn)換:長短把把short intshort int型數(shù)據(jù)送到型數(shù)據(jù)送到charchar型
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中小學(xué)2025年校本課程開發(fā)計劃書
- 六年級下冊信息技術(shù)教學(xué)計劃
- 開餐飲店流程以及餐飲創(chuàng)業(yè)計劃書
- 2025銷售部門年度工作計劃
- 上汽大眾配件計劃員崗位職責(zé)
- 2025酒店采購部工作計劃2
- 創(chuàng)先爭優(yōu)活動單位工作計劃
- 2025年1月員工培訓(xùn)工作計劃例文
- 《型半導(dǎo)體器》課件
- 2020版 滬教版 高中音樂 必修1 音樂鑒賞 上篇《第二單元 絲竹八音》大單元整體教學(xué)設(shè)計2020課標(biāo)
- 北師版七年級數(shù)學(xué)上冊期末復(fù)習(xí)考點 清單04 基本平面圖形(12個考點梳理+題型解讀+提升訓(xùn)練)
- Pep小學(xué)英語六年級上冊教案-全冊
- 2024粵東西粵北地區(qū)教師全員輪訓(xùn)培訓(xùn)心得總結(jié)
- 服務(wù)類驗收單
- 教育信息化2.0時代教師新技能進階智慧樹知到期末考試答案2024年
- 國開2023年春《理工英語3》機考網(wǎng)考期末復(fù)習(xí)資料參考答案
- 中英文品牌(商標(biāo))授權(quán)書模板
- 分解槽、沉降槽制作安裝施工方案
- 邊坡六棱塊施工工藝及方法
- 中國古建筑行業(yè)分析報告
- 蜂產(chǎn)品訂購合同范本
評論
0/150
提交評論