C語言輔導(dǎo)-ANSI/ISO標準_第1頁
C語言輔導(dǎo)-ANSI/ISO標準_第2頁
C語言輔導(dǎo)-ANSI/ISO標準_第3頁
C語言輔導(dǎo)-ANSI/ISO標準_第4頁
C語言輔導(dǎo)-ANSI/ISO標準_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言輔導(dǎo):ANSI/ISO標準一個C程序員會期望一個C程序無論是在哪里開發(fā)的,在另一個編譯程序中都能通過編譯。實際上不能完全做到這一點,由于很多頭文件和函數(shù)庫都是針對某些特定的編譯程序或平臺的。有些(很少!)語言擴大性能,例如基于Intel的編譯程序所使用的near和far關(guān)鍵字以及存放器偽變量,也只不過是某種平臺的開發(fā)商們所認可的一種標準。

假如你認為靠一種標準走遍天下是理所固然的,就象左腳踩加速器,右腳踩剎車一樣,那么你的視野未免有些狹窄。有兩種不同的BASIC標準,但都沒有得到廣泛的支持;世界上最流行的Pascal編譯程序并不符合正式的標準;現(xiàn)在正在進展的C++標準,由于變化太快,也沒有得到廣泛的支持;有些實現(xiàn)遵循一種嚴格的Ada標準,但Ada標準也沒能大規(guī)模地占據(jù)世界市場。

從技術(shù)上講有兩種C語言標準,一種來自ANSI(AmericanNationalStandardInstitute,美國國家標準協(xié)會)X3J11委員會,另一種來自ISO(InternationalStandardOrganization,國際標準協(xié)會)9899—1990。由于ISO標準中的某些改良優(yōu)于ANSI標準,而ANSI標準也承受了這個國際版本,因此“ANSI/ISO標準”是一種正確的說法。

那么,這種標準對你有什么幫忙呢?你可以買到一份該標準的副本,即HerbertSchildt所著的((TheAnnotatedANSICStandard》(OsborneMcGraw-Hill出版,ISBNO-07-881952-O)一書,該書對語言和庫都作了介紹,并帶有解釋。這本書比大多數(shù)正式標準要廉價多了,后者由ANSI和ISO出售,以解決建立標準所需的局部費用。并不是每一個C程序員都需要這樣一本書,但它是最權(quán)威的。

最重要的一點是,ANSI/ISO標準是對“什么是c?”這一問題的權(quán)威解答。假如編譯程序開發(fā)商所做的某些實現(xiàn)不符合這一標準,你可以把它作為錯誤指出來,這不會引起爭辯。

ANSI/ISO標準也不是包羅萬象的。詳細地說,它沒有涉及c程序可能會做的很多好玩的事情,例如圖形或多任務(wù)。很多兼容性不強的標準包含了這些內(nèi)容,其中的一些將來可能會成為權(quán)威的標準,因此你不必完全拘泥于ANSI/ISO標準。

順便提一句,除編程語言之外,還有很多東西也有ANSI標準,其中的一種就是ANSI為全屏幕文本操作的退出序列集合而寫的標準,在第17章中所介紹的MS—DOS的“ANSI驅(qū)動程序”指的就是這種標準(好玩的是,MS-DOS的ANSI.SYS只實現(xiàn)了ANSI標準序列中的一小局部)。

16.1運算符的優(yōu)先級總能起作用嗎?

有關(guān)運算符優(yōu)先級的規(guī)章略微有點簡單。在大多數(shù)狀況下,這些規(guī)章的確是你所需要的,然而,有人也指出其中的一些規(guī)章原來是可以設(shè)計得更好的。

讓我們快速地回憶一些有關(guān)內(nèi)容:“運算符優(yōu)先級”是這樣一些規(guī)章的集合——這些規(guī)章規(guī)定了“運算符”(例如+,-,等等)的優(yōu)先性,即哪一種運算符先參與運算。在數(shù)學(xué)中,表達式“2×3+4×5”和“(2×3)+(4×5)”是等價的,由于乘法運算在加法運算之前進展,也就是說乘法的優(yōu)先級比加法高。

在c中,有16級以上的運算符優(yōu)先級。盡管這么多的規(guī)章有時使c程序不易閱讀,但也使C程序?qū)懫饋砗唵味嗔恕km然這不是的一種折衷方法,但這就是C所采納的方法。表16.1總結(jié)了運算符的優(yōu)先級。

表16.1運算符優(yōu)先級總結(jié)(從高到低)

----------------------------------------------------------------------------------

優(yōu)先級運算符

----------------------------------------------------------------------------------

1x[y](下標)

x(y)(函數(shù)調(diào)用)

x.y(訪問成員)

x->y(訪問成員指針)

x++(后綴自增)

x--(后綴自減)--

2++x(自增)

--x(自減)

&x(取地址)

*x(指針引用)

+x(同x,和數(shù)學(xué)中一樣)

-x(數(shù)學(xué)求負)

!x(規(guī)律非)

~x(按位求反)

sizeofx和sizeof(x_t)(字節(jié)數(shù)大小)

3(x_t)y(強制類型轉(zhuǎn)換)

4x*y(乘法)

x/y(除法)

x%y(求余)

5x+y(加法)

x-y(減法)

6x>y(按位右移)

7xy,x=y(關(guān)系比擬)

8x==y,x!=y(相等比擬)

9x&y(按位與)

10x^y(按位異或).

11x|y(按位或)

12x&&y(規(guī)律與)

13x||y(規(guī)律或)

14x?y:z(條件)

x=y,x*=y,x/=y,x+=y,x-=y,>=,&=,^=,|=(賦值,右結(jié)合性)

16x,y(逗號)

--------------------------------------------------------------------------------------

優(yōu)先級的是后綴表達式,即運算符跟在一個表達式后面;其次是前綴或單目表達式,即運算符位于一個表達式的前面;再次是強制類型轉(zhuǎn)換表達式。

留意:關(guān)于運算符優(yōu)先級,最重要的是知道*p++和*(p++)是等價的。也就是說,在*p++中,++運算符作用在指針上,而不是作用在指針所指向的對象上。象“*p++=*q++;這樣的代碼在C中是隨處可見的,其中的優(yōu)先級和“(*(p++))=(*(q++))”中的是一樣的。這個表達式的含義是“q+1,但仍用q原來的值找到q所指向的對象;p加1,但仍用p原來的值;把q所指向的對象賦給p所指向的對象”,整個表達式的值就是原來q所指向的對象。在C中你會常??吹竭@樣的代碼,并且你會有很多時機去寫這樣的代碼。對于其它運算符,假如你記不住其優(yōu)先級,可以查閱有關(guān)資料,但是,一個好的c程序員應(yīng)當連想都不用想就能明白*p++的含義。

最初的C編譯程序是為這樣一種計算機編寫的——它的某些指令對象*p++和

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論