語言參考手冊

2021-05-28 09:37:11 字數 2583 閱讀 2471

有人都說c比較難,我看不怎麼難;可能就是c語言接觸到的底層太多了,所以感到有點難了,但這也不是什麼壞處,正是體現了c語言的優越之處:我們的許可權更大,寫出的程式在效能上更好!

由於這個原因,再加上自己也想有個總結性的c參考手冊,原本打算自己根據c標準(c89、c99)整理一下c語言的,可誰知竟然發現這個工作早在27年前就有人已經做過了,而且做的特別好!這個人就是samuel p. harbison iii!真讓人汗顏!

c語言的演變

傳統c語言

最初的c語言描述出現在brian kernighan與dennis ritchie(通常合稱為「k&r」,他們也是unix系統的創造者)的著作《the c programming language》第1版(prentice-hall, 1978)。此書出版後,這個語言不斷有比細小的演變,增加或刪除了一些我。我們把20世紀80年代初公認的c語言定義稱為傳統c語言,是標準化之前的方言。當然,各個c語言提供商也對傳統c語言進行了各種擴充套件。

標準c語言(1989)

1982年,美國國家標準協會(ansi)認識到標準化將有助於c語言在商業化程式設計中的普及,因此成立了乙個委員會來為c語言及其執行庫制定標準。這個委員會,即x3j11(現在為nctts  j11)的主席是jim brodie,它制定了乙個標準並在1989年被正式採用,即美國國家標準x3.159-1989或稱作「ansi c」。

考慮到程式設計活動是國際化的,因此完成ansi c語言之後,成立了乙個國際標準化組織iso/iec  jtc1/sc22/wg14,在p.j plauger(曾出版《c標準庫》——是基於c89的,現為iso c++標準委員會主席)的領導下,只作了少量編輯性修改,即把ansi標準變成了國際標準iso/iec 9899:1990.此後,iso/iec標準被ansi採用,人們把這個公共標準稱為「標準c語言」。由於這個標準後來又有了變化,因此我們稱為其為「標準c語言(1989)或簡稱」c89「。

傳統c語言到c89的改變包括:

增加了真正的標準庫

新的預處理器命令與特性

函式原型允許在函式宣告中指定引數型別

一些新關鍵字,包括const、volatile與signed(注:一些國內教材(如譚浩強的《c程式設計》)講解的語法大部分都是沿用傳統c,對c標準的新特性提都沒提)

寬字元、寬字串和多位元組字元

對約定規則、宣告和型別檢查的許多小改動與澄清

標準c語言(1995)

作為對c語言標準的正常維護工作,wg14對c89作了兩處技術修訂(缺陷修復)和乙個補充(擴充套件)。總的來看,尤其是通過增加新的庫函式,以上這些工作對c語言標準進行了相對合適的修改,得到的結果我們稱之為「c89增補1」或「c95」。c95對c89所作的改變包括:

3個新的標準庫標頭檔案iso646.h、wctype.h與wchar.h

幾個新的記號和巨集,用於替換一些國家的字符集中沒有的運算子和標點符號(這些在標頭檔案iso646.h中定義)

printf/scanf系列函式的一些新格式**

大量新函式和一些型別與常量,用於多位元組字元和寬字元

標準c語言(1999)

iso/iec標準都需要經常進行審查和更新。1995年,wg14開始對c語言標準作更大的修訂,最終於1999年完成並獲批准。新標準iso/iec 9899:1990或「c99」取代原有的標準(及所有修訂與補充),成為正式標準c語言。提供商根據新標準更新各自的c語言函式庫和編譯器。

c99在c89/c95語言和庫函式中增加了許多新特性,包括:

複數運算

擴充套件整數型別,包括長標準型別(如long long int,  unsinged long long int,  long long double等等)

變長陣列(在c89中,變長長度不支援變數;在c99獲得允許)

布林陣列

布林型別

對非英語字符集更好的支援

對浮點數型別更好的支援,包括所有型別的數學函式

c++風格的注釋(//)

c99的改動比c95更大,包括語言的改變和函式庫的擴充套件。c99標準文件比c89文件大得多(c89的中文版(gb/t 15272-94)有195頁,c99英文版有540左右)。但是,改變還是「本著c語言精神」進行的,語言的基本性質沒有改變。

c編譯器的選擇

有很多人推薦選擇vc6.0,實在不明白他們推薦這款編譯器有什麼目的。本人不建議初學者用這款編譯器,乙個顯著的理由是vc6.0已經開發10多年了,關鍵的是從那時到現在,微軟一直沒有更新這款編譯器(好像已經放棄了它的開發),而是維護著vc2008。由於以上原因,vc6.0遠遠不支援c標準了,據有人測試,vc6.0對c++標準的支援最高才是70%,想想c++標準第一次發布是在2023年,而現在已經10多年過去了,vc6.0還能符合標準嗎?乙個重要的例子,就是for迴圈的作用域問題,vc6.0在設計時就是個缺陷。

如果還想用微軟的產品,你可以使用vc2005或vc2008,據微軟公布vc2008支援c++標準達到98%(不知是真是假)。

gcc編譯器原本上是命令列介面的,如果在windows下,可以使用dev-c++,gcc編譯在windows下的圖形化介面,而且小巧靈瓏(只有9m左右),相比旁大的vc(vc2008有幾個g),dev-c++是你很好的選擇。

Python 語言參考手冊

本參考手冊描述了 python 的語法和 核心語義 本參考是簡潔的,但試圖做到準確和完整。非必要的內建物件型別和內建函式 模組的語義描述在 python 標準庫 中。有關該語言的非正式介紹,請參閱 python 教程 對 c 或 c 程式設計師,還有兩個額外的手冊 擴充套件和嵌入 python 直譯...

cass參考手冊 CASS9 2參考手冊

釋放雙眼,帶上耳機,聽聽看 前 言 cass9.2參考手冊關於cass9.2 cass地形地藉成圖軟體是基於autocad平台技術的gis前端資料處理系統。廣泛應用於地形成圖 地藉成圖 工程測量應用 空間資料建庫 市政監管等領域,全面面向gis,徹底打通數碼化成圖系統與gis介面,使用骨架線實時編輯...

HTML 參考手冊

new html5 中的新標籤。標籤描述 定義注釋。定義文件型別。定義錨。定義縮寫。定義只取首字母的縮寫。定義文件作者或擁有者的聯絡資訊。定義影象對映內部的區域。定義文章。定義頁面內容之外的內容。定義聲音內容。定義粗體字。定義頁面中所有鏈結的預設位址或缺省目標。不贊成使用。定義頁面中文字的預設字型 ...