C語言標准



寫在前面:K&R C不用說。個人以為,我們平常說的標准C,指的是ANSI C,ISO C,C89,C90。


K&R C


  1978年,丹尼斯•里奇(Dennis Ritchie)和布萊恩•柯林漢(Brian Kernighan)合作出版了《C程序設計語言》的第一版。書中介紹的C語言標准也被C語言程式設計師稱作“K&R C”,第二版的書中也包含了一些ANSI C的標准。K&R C主要介紹了以下特色: 

  • 結構(struct)類型
  • 長整數(long int)類型
  • 無符號整數(unsigned int)類型
  • 把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。

  即使在后來ANSI C標准被提出的許多年后,K&R C仍然是許多編譯器的最低標准要求,許多老舊的編譯仍然運行K&R C的標准。

ANSI C和ISO C


  C 的第一個標准是由ANSI發布的。雖然這份文檔后來被國際標准化組織(ISO)采納並且ISO發布的修訂版也被ANSI采納了,但名稱ANSI C(而不是 ISO C)仍被廣泛使用。ANSI C現在被幾乎所有廣泛使用的編譯器支持。現在多數C代碼是在ANSI C基礎上寫的。

C89和C90

  1983年,美國國家標准協會組成了一個委員會,X3J11,為了創立 C 的一套標准。經過漫長而艱苦的過程,該標准於1989年完成,並在作為ANSI X3.159-1989 "Programming Language C"正式生效。這個版本的語言經常被稱作"ANSI C",或有時稱為"C89"(為了區別C99)。 在1990年,ANSI C標准(帶有一些小改動)被美國國家標准協會采納為ISO/IEC 9899:1990。這個版本有時候稱為C90或者ISO C。因此,C89和C90通常指同一種語言。 傳統C語言到ANSI/ISO標准C語言的改進包括:

  • 增加了真正的標准庫  
  • 新的預處理命令與特性  
  • 函數原型允許在函數申明中指定參數類型  
  • 一些新的關鍵字,包括 const、volatile 與 signed  寬字符、寬字符串與字節多字符  
  • 對約定規則、聲明和類型檢查的許多小改動與澄清

C99

  2000年3月,ANSI 采納了 ISO/IEC 9899:1999 標准。這個標准通常指C99。 C99新增了一些特性,如:  

  • 支持不定長的數組,即數組長度可以在運行時決定。  
  • 變量聲明不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i<100;++i) 的形式,即i 只在 for 語句塊內部有效。  
  • 初始化結構的時候允許對特定的元素賦值。  
  • 允許編譯器化簡非常數的表達式。
  • 取消了函數返回類型默認為 int 的規定。

  但是各個公司對C99的支持所表現出來的興趣不同。當GCC和其它一些商業編譯器支持C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣,他們把更多的精力放在了C++上。

C11

  在2011年12月,ANSI 采納了 ISO/IEC 9899:2011 標准。這個標准通常即C11,它是C程序語言的最新標准。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM