2023年,brian kernighan 和 dennis ritchie合著的the c programming
language 第1版是公認的c標準。它定義了c語言,但沒有定義c庫。它不是官方的標準。
這個標準化的工作在美國國家標準局(ansi)的框架中進行(1983-1988),最終結果是2023年10月頒布的ansi標準x3.159-1989,也就是後來人們所說的ansic標準。由這個標準定義的c語言被稱作ansi c。
ansi c標準很快被採納為國際標準和各國的標準。國際標準為iso/iec9899-1990,中國國家標準gb/t 15272-94是國際iso標準的中文翻譯。
國際標準化組織(iso)採用了這套c標準,因此iso c和ansi c是完全相同的標準。
ansi於2023年批准該標準,因此通常稱之為c89。
iso於2023年批准該標準,因而又有c90的叫法。
c99 (以前稱為c9x )是iso / iec 9899:1999的非正式名稱,在2023年推出,被ansi於2023年3月採用。它是c程式語言標準的過去版本。 它擴充套件了以前的版本( c90 ),增加了語言和標準庫的新功能,並幫助實現更好地利用可用的計算機硬體,如ieee 754-1985浮點運算和編譯器技術,最主要的增強在數值處理上。 2023年發布的c程式語言標準的c11版本取代了c99。
c11標準是 iso/iec 9899:2011 - information technology -- programming languages -- c 的簡稱[1],曾用名為c1x。
c11標準是c語言標準的第三版,前乙個標準版本是c99標準。2023年12月8日,國際標準化組織(iso)和國際電工委員會(iec) 旗下的c語言標準委員會(iso/iec jtc1/sc22/wg14)正式發布了c11標準[2]。
c11標準的最終定稿的草案是免費開放的,為n1570?[3]??,但是正式標準檔案需要198瑞士法郎[2]。
當前,支援此標準的主流c語言編譯器有:gcc、clang、intel c++ compiler等。
對於原始檔內部的識別符號,有效的最小長度擴充到31個字元。檔案間連線時,識別符號的最小有效長度仍然為6個字元。(許多實現都支援更大的長度)
增加了幾個新關鍵字:void,const,volatile,signed,enum。拋棄了老關鍵字entry。
在換意字元 \ 之後寫非規定的序列,其作用確定為無定義。
規定8和9都不是八進位制數的合法字元。
引進了數的字尾字元:整數的u和l,浮點數的f和l。
規定連續出現的字串常量將被拼接在一起。
引進了「寬字元」的概念。
將字元也確定為帶符號(signed)和不帶符號(unsigned)的。
丟棄了long float(原來作為double的同義詞)。
引入了void型別,用 (void*) 表示通用指標的型別(過去人們通常用 (char*))。
對算術型別規定了最小表示範圍。要求每個c語言系統用標頭檔案(;和;)說明實現中的具體規定。
引進了列舉定義enum。
採用了來自c++的型別修飾符,如const。
規定字串常量是不可修改的。
改變了算術型別的隱含轉換規則。
刪去了一些過時賦值運算子,如 =+。規定賦值運算子都是基本單詞,如 += 之間不能有空格分隔。
引進了與一元 - 運算子對應的一元 + 運算子。
指向函式的指標可以直接放在函式呼叫的位置,不必顯式地寫間接操作。
允許結構地整體賦值,作為函式引數和返回值傳遞。
允許將取位址運算子作用於陣列,得到的是指向有關陣列的指標。
標準規定 sizeof 運算子的返回值為 size_t 型別(某個無符號整型),這一型別在標準標頭檔案;裡定義。同時在那裡定義的還有 ptrdiff_t 型別,它是指標減運算的結果型別。
規定取位址運算子不能作用於 register 變數。
規定移位表示式的型別為其左運算物件的型別。
允許建立指向過陣列末元素乙個位置的指標,以及對它的算術運算和關係運算。
(從c++)引進了包含引數型別的函式原型概念,引進了變長參數列函式的概念。仍允許老的形式,但僅僅是作為過時形式保留。
標準規定任何區域性宣告的作用域僅僅是當前的塊(復合語句)。
規定函式引數作為加入函式體(復合語句)的宣告,因此不能用變數宣告去覆蓋。
有關名字空間的規定:所有結構、聯合和列舉標記在乙個名字空間裡,標號是另乙個名字空間。
聯合變數在定義時也可以初始化,規定初始化其第乙個成分。
自動結構、聯合和陣列也可以初始化,但限制其初始化方式(其中只能包含常量表示式)。
帶大小描述的字元陣列也可以用大小與之相同的字串常量初始化(結束的 \0 被刪除)。
開關語句的控制表示式和case標號可以是任何整型的(包括字元型別)。
PHP 各個版本之間的區別
php更新的速度實在是太快了,在學習php之前,我查閱並了解了一下php各個版本之間的區別,分享在此處。php5.2 以前 autoload,pdo 和 mysqli,型別約束 php5.2 json 支援 php5.3 棄用的功能,匿名函式,新增魔術方法,命名空間,後期靜態繫結,heredoc 和...
spring cloud各個版本之間的區別
最近公司在使用spring cloud進行開發,對於spring cloud版本號一直有疑惑。那個版本在前?那個版本在後?那個版本是最新的?舉個瓜 2.0.3 release 2 主版本號,當功能模組有較大更新或者整體架構發生變化時,主版本號會更新 0 次版本號。次版本表示只是區域性的一些變動。2 ...
linux及其各個發行版本的介紹
linux及其各個發行版本的介紹 unix誕生於20世紀60年代末,windows誕生於20世紀80年代中期,linux誕生於20世紀90年代初。unix誕生的時間最早,後來的windows和linux都有借鑑與unix。可以說unix是作業系統的老大哥。linux是乙個類似unix的作業系統,li...