版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
少年易學(xué)老難成,一寸光陰不可輕少年易學(xué)老難成,一寸光陰不可輕-百度文庫#}討論1:在TurboC2.0開發(fā)環(huán)境下運行此程序時,編譯過程中提示有一個錯誤,信息窗口顯示如圖3-2所示的錯誤信息,說明源程序第五行有錯,錯誤原因是主程序中的變量C沒有定義。編輯窗口源程序反相顯示出第五行,見圖3-3所示。分析錯誤原因可知,程序第五行并沒有錯,而是在使用變量c之前沒有定義其類型,修改程序第二行為:inta,b,c;重新編譯即可通過。可見,C程序中的所有變量都必須先定義后使用。CompilingC:\TC\SUM.C:ErrorC:\TC5:Undefinedsymbolinfunctionnain圖SUM.匚源程序編譯出錯信息,討論2:由SUM.C源程序可見,該程序的運行結(jié)果應(yīng)該是:c=32770,可實際運行結(jié)果如下:c=-32766FileEJHRUnC(Line5Col5main()tinta,b;a=327i7;h=3;printf("c=^d\nll,G);圖mmsum.c源程序編輯窗口平顯然這個結(jié)果是錯誤的,但系統(tǒng)沒有提示出錯。為什么會出現(xiàn)這種情況呢?圖3-4是該程序運行后變量a、b、c中的存儲情況。由圖中可見,a和b的值都沒有超出整型數(shù)的表示范圍,而a加b后應(yīng)得到32770,這個數(shù)已經(jīng)超出了整型數(shù)的表示范圍,稱為溢出。但這種溢出在內(nèi)存變量c中的表現(xiàn)形式正好是數(shù)值-32766的補碼形式,當(dāng)輸出變量c的內(nèi)容時自然就輸出了-32766,造成結(jié)果錯誤。這就是數(shù)據(jù)溢出導(dǎo)致的結(jié)果。對于這種問題,系統(tǒng)往往不給出錯誤提示,而是要靠正確使用類型說明來保證其正確性。所以要求對數(shù)據(jù)類型的使用要仔細(xì),對運算結(jié)果的數(shù)量級要有基本估計。變量*jI51444444^1川13JhlI嵬花了j變量匕」[口|皿口|口|口|可同川01爪1雙口3j變量cj|"口|"口|"口|口|""口I01口1口I111國-嵬循6的補碼J閣14兩數(shù)相加變量存儲示意圖」如果把上述程序作以下修改:/*SUM.C源程序*/main(){longa,b,c;/*說明a、b、c為長整型變量*/a=32767;b=3;c=a+b;printf("c=%ld\n",c);/*按長整型格式輸出變量c的值*/}即把變量a、b、c定義為長整型,就可以得到正確的運行結(jié)果。請讀者思考:如果只把c定義為長整型,a和b還保持整型,結(jié)果會怎樣?討論3:在C程序中,要注意常量與變量的類型匹配問題,例如上述程序中變量c的結(jié)果是正整數(shù)32770,與之匹配的有l(wèi)ongint型,還有unsignedint、unsignedshortint和unsignedlongint等所有無符號整型,因為32770是正數(shù),又沒有超出所有無符號整型數(shù)的表示范圍。而int或shortint型是不能與之匹配的,否則會產(chǎn)生溢出。3.2.3實型數(shù)據(jù)及其表示.實數(shù)類型C語言提供了三種用于表示實數(shù)的類型:單精度型、雙精度型和長雙精度型。表3-3列出了實型數(shù)據(jù)的長度和表示范圍。表中的有效位是指數(shù)據(jù)在計算機中存儲和輸出時能夠精確表示的數(shù)字位數(shù)。表3-3實數(shù)基本類型表實數(shù)類型存儲字節(jié)數(shù)最小數(shù)值范圍有效位單精度型4字節(jié)10-38?10386?7雙精度型8字節(jié)10-308?1030815?16長雙精度型16字節(jié)10-4931?10493218?19在計算機中,實數(shù)是以浮點數(shù)形式存儲的,所以通常將單精度實數(shù)稱為浮點數(shù)。由計算機基礎(chǔ)知道,浮點數(shù)在計算機中是按指數(shù)形式存儲的,即把一個實型數(shù)據(jù)分成小數(shù)和指數(shù)兩部分。例如十進制實型數(shù)據(jù)0.12345610-2在計算機中的存放形式可用圖3-5示意。實際上計算機中存放的是二進制數(shù),這里僅用十進制數(shù)說明其存放形式。數(shù)符- 小數(shù)? 指數(shù)符號招數(shù)?十0.123456-2-1小數(shù)部分p 指數(shù)部分圖15懶飄在計算機中的存放形式?其中,小數(shù)部分一般都采用規(guī)格化的數(shù)據(jù)形式,即:小數(shù)點放在第一個有效數(shù)字前面,使小數(shù)部分存放小于1的純小數(shù)。例如0.12345610-2還可表示為123.45610-5、1.2345610-3、0.000123456101等,但這些都不是規(guī)格化的數(shù)。表示小數(shù)部分的位數(shù)愈多,數(shù)的有效位就愈多,數(shù)的精確度就愈高。表示指數(shù)部分的位數(shù)愈多,數(shù)的表示范圍就愈大。究竟用多少位來表示小數(shù)部分,多少位表示指數(shù)部分,C標(biāo)準(zhǔn)對此并無具體規(guī)定,由各C編譯系統(tǒng)自定。對于單精度實數(shù),一般的C編譯系統(tǒng)用4個字節(jié)中的前24位表示小數(shù)部分,其中最高位為整個數(shù)的符號位,用后8位表示指數(shù)部分,其中最高位為指數(shù)的符號位(見圖3-5)。這樣,單精度實數(shù)的精度就取決于小數(shù)部分的23位二進制數(shù)位所能表達(dá)的數(shù)值位數(shù),將其轉(zhuǎn)換為十進制,最多可表示7位十進制數(shù)字,所以單精度實數(shù)的有效位是7位。由實型數(shù)據(jù)的存儲形式可見,由于機器存儲位數(shù)的限制,浮點數(shù)都是近似值,而且多個浮點數(shù)運算后誤差累積很快,所以引進了雙精度型和長雙精度型,用于擴大存儲位數(shù),目的是增加實數(shù)的長度,減少累積誤差,改善計算精度。2.實型常量實型常量亦被稱為實型數(shù)或浮點數(shù)。在C語言中,實型常量一般都作為雙精度來處理,并且只用十進制數(shù)表示。實型常量有兩種書寫格式:小數(shù)形式和指數(shù)形式。(1)小數(shù)形式:它由符號、整數(shù)部分、小數(shù)點及小數(shù)部分組成。例如以下都是合法的小數(shù)形式實型常量:12.34,0.123,.123,123.,-12.0,-0.0345,0.0,0.注意其中任何位置上的小數(shù)點都是不可缺少的。例如123.不能寫成123,因為123是整型常量,而123.是實型常量。(2)指數(shù)形式:由十進制小數(shù)形式加上指數(shù)部分組成,其形式如下:十進制小數(shù)e指數(shù)或:十進制小數(shù)E指數(shù)格式中的e或E前面的數(shù)字表示尾數(shù),e或E表示底數(shù)10,而e或E后面的指數(shù)必須是整數(shù),表示10的冪次。例如25.34e3表示25.34x103=25340。以下都是合法的指數(shù)形式實型常量:2.5e3,-12.5e-5,0.123E-5,-267.89E-6,0.61256e3注意指數(shù)必須是不超過數(shù)據(jù)表示范圍的正負(fù)整數(shù),并且在e或E前必須有數(shù)字。例如:e3,3.0e,E-9,10e3.5,.e8,e都是不合法的指數(shù)形式。對于上述兩種書寫形式,系統(tǒng)均默認(rèn)為是雙精度實型常量,可表示15?16位有效數(shù)字,數(shù)的表示范圍可達(dá)到10-308?10308。如果要表示單精度實型常量和長雙精度實型常量,只要在上述書寫形式后分別加上后綴f(F)或(L)即可。例如:2.3f,-0.123F,2e-3f,-1.5e4F為合法的單精度實型常量,注意只有7位有效數(shù)字。1256.34L,-0.123L,2e3L,為合法的長雙精度實型常量,有18?19位有效數(shù)字。對于超過有效數(shù)字位的數(shù)位,系統(tǒng)存儲時自動舍去。3.實型變量在C語言中,實型變量分為單精度、雙精度和長雙精度等三種類型。ANSIC標(biāo)準(zhǔn)允許的定義三種實型變量的關(guān)鍵字如下:float單精度型double^雙精度型longdouble^長雙精度型實型變量的定義,只需在說明語句中指明實型數(shù)據(jù)類型和相應(yīng)的變量名即可。例如:floata,b;/*說明變量a,b為單精度型實數(shù)*/doublec,d;/*說明變量c,d為雙精度型實數(shù)*/longdoublee,f/*說明變量e,f為長雙精度型實數(shù)*/4.實型數(shù)據(jù)應(yīng)用中的誤差問題例3-2:輸出實型數(shù)據(jù)a,b/*L3_2.C源程序*/main(){floata;/*說明變量a為單精度型*/doubleb;/*說明變量b為雙精度型*/a=12345.6789;/*為a賦值*/b=0.1234567891234567899e15;/*為b賦值*/printf("a=%f,b=%f\n",a,b);/*輸出變量a、b的值*/}程序為單精度變量a和雙精度變量b分別賦值,并不經(jīng)過任何運算就直接輸出變量a,b的值。理想結(jié)果應(yīng)該是照原樣輸出,即:a=12345.6789,b=0.1234567891234567899e15但運行該程序,實際輸出結(jié)果是:a=12345.678711,b=123456789123456.797000由于實型數(shù)據(jù)的有效位是有限的,程序中變量a為單
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 維生素c課程設(shè)計
- 蓋板零件課程設(shè)計
- 保險行業(yè)會計職責(zé)總結(jié)
- 海底動物創(chuàng)意課程設(shè)計
- 咨詢行業(yè)的營銷工作總結(jié)
- 火葬場衛(wèi)生整治工作總結(jié)
- 2024年西雙版納職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 水務(wù)領(lǐng)域數(shù)字經(jīng)濟發(fā)展的研究計劃
- 2024年認(rèn)識圖形二教案
- 2024年秋天的信教案模板
- DB-T 29-202-2022 天津市建筑基坑工程技術(shù)規(guī)程
- DB51∕T 5060-2013 四川省預(yù)拌砂漿生產(chǎn)與應(yīng)用技術(shù)規(guī)程
- 粵教版三年級勞動與技術(shù)全冊教案教學(xué)設(shè)計
- 越努力越幸運商務(wù)紅色工作匯報PPT模板
- (完整版)外科學(xué)名詞解釋【完整版】
- 永磁同步電機控制系統(tǒng)設(shè)計與仿真畢業(yè)論文
- 傳感器與檢測技術(shù)課后習(xí)題和答案(陳杰)
- 醫(yī)用紅外熱像儀
- 藏歷新年ppt模版課件
- 基于PLC的自動門控制系統(tǒng)
- 滬教牛津版小學(xué)四年英語上冊全冊教案
評論
0/150
提交評論