亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
C語言的發(fā)展
[打印本頁]
作者:
rainballdh
時間:
2009-12-17 16:38
標題:
C語言的發(fā)展
設(shè)計哲學
C語言是一個
程序語言
,設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的
機器碼
以及不需要任何運行環(huán)境支持便能運行的編程語言。C語言也很適合搭配
匯編語言
來使用。盡管C語言提供了許多低級處理的功能,但仍然保持著良好
跨平臺
的特性,以一個標準規(guī)格寫出的C語言程序可在許多計算機平臺上進行編譯,甚至包含一些嵌入式處理器(
微控制器
或稱MCU)以及
超級計算機
等作業(yè)平臺。
特色
C語言是一個有結(jié)構(gòu)化程序設(shè)計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。
傳遞參數(shù)是以值傳遞(Pass-by-value),也可以通過指針來傳遞參數(shù)(Pass-by-address)。
不同的變量類型可以用結(jié)構(gòu)體(struct)組合在一起。
只有32個保留字(reserved keywords),使變量、函數(shù)命名有更多彈性。
部份的變量類型可以轉(zhuǎn)換,例如整形和字符變量。
通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
編譯預(yù)處理(preprocessor)讓C語言的編譯更具有彈性。
歷史
早期發(fā)展
C語言的第一次發(fā)展在1969年到1973年之間。之所以被稱為“C”是因為C語言的很多特性是由一種更早的被稱為
B語言
的編程語言中發(fā)展而來。早期操作系統(tǒng)的內(nèi)核大多由
匯編語言
組成,隨著C語言的發(fā)展,C語言已經(jīng)可以用來編寫操作系統(tǒng)的內(nèi)核。
1973年
,
Unix
操作系統(tǒng)
的
內(nèi)核
正式用C語言改寫,這是C語言第一次應(yīng)用在操作系統(tǒng)的內(nèi)核編寫上。
K&R C
1978年
,丹尼斯·里奇(Dennis Ritchie)和Brian Kernighan合作出版了《
C程序設(shè)計語言
》的第一版。書中介紹的C語言標準也被C語言程序設(shè)計師稱作“K&R C”,第二版的書中也包含了一些ANSI C的標準。K&R C主要介紹了以下特色:
結(jié)構(gòu)(struct)類型
長整數(shù)(long int)類型
無符號整數(shù)(unsigned int)類型
把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道用戶要處理i = +10還是i =- 10,使得處理上產(chǎn)生混淆。
即使在后來ANSI C標準被提出的許多年后,K&R C仍然是許多編譯器的最低標準要求,許多老舊的編譯仍然運行K&R C的標準。
ANSI C 和 ISO C
主條目:
ANSI C
1989年,C語言被 ANSI 標準化(ANSI X3.159-1989)。標準化的一個目的是擴展K&R C。這個標準包括了一些新特性。在K&R出版后,一些新特性被
非官方
地加到C語言中。
void 函數(shù)
函數(shù)返回 struct 或 union 類型
void * 數(shù)據(jù)類型
在ANSI標準化自己的過程中,一些新的特性被加了進去。ANSI也規(guī)定一套了標準函數(shù)庫。ANSI
ISO
(
國際標準化組織
)成立 ISO/IEC JTC1/SC22/WG14 工作組,來規(guī)定國際標準的C語言。通過對ANSI標準的少量修改,最終通過了 ISO 9899:1990。隨后,ISO標準被 ANSI 采納。
傳統(tǒng)C語言到ANSI/ISO標準C語言的改進包括:
增加了真正的標準庫
新的預(yù)處理命令與特性
函數(shù)原型允許在函數(shù)申明中指定參數(shù)類型
一些新的關(guān)鍵字,包括 const、volatile 與 signed
寬字符、寬字符串與字節(jié)多字符
對約定規(guī)則、聲明和類型檢查的許多小改動與澄清
WG14工作小組之后又于
1995年
,對1985年頒布的標準做了兩處技術(shù)修訂(缺陷修復(fù))和一個補充(擴展)。下面是 1995 年做出的所有修改:
3 個新的標準庫頭文件 iso646.h、wctype.h 和 wchar.h
幾個新的記號與預(yù)定義宏,用于對國際化提供更好的支持
printf/sprintf 函數(shù)一系列新的格式代碼
大量的
函數(shù)
和一些
類型
與
常量
,用于
多字節(jié)字符
和
寬字節(jié)字符
C99
在ANSI的標準確立后,C語言的規(guī)范在一段時間內(nèi)沒有大的變動,然而C++在自己的標準化建立過程中繼續(xù)發(fā)展壯大。《標準修正案一》在1995年
為C語言建立了一個新標準,但是只修正了一些C89標準中的細節(jié)和增加更多更廣得國際字符集支持。不過,這個標準引出了1999年ISO
9899:1999的發(fā)表。它通常被成為C99。C99被ANSI于
2000年
3月采用。
在C99中包括的特性有:
對編譯器限制增加了,比如源程序每行要求至少支持到 4095 字節(jié),變量名函數(shù)名的要求支持到 63 字節(jié)(extern 要求支持到 31)
預(yù)處理增強了。例如:
宏
支持取可變參數(shù) #define Macro(...) __VA_ARGS__
使用
宏
的時候,參數(shù)如果不寫,
宏
里用 #,## 這樣的東西會擴展成空串。(以前會出錯的)
支持 // 行注釋(這個特性實際上在C89的很多編譯器上已經(jīng)被支持了)
增加了新關(guān)鍵字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 這樣的類型
支持 %: %:%: ,等等奇怪的符號替代,D&E 里提過這個
支持了不定長的數(shù)組。數(shù)組的長度就可以用變量了。聲明類型的時候呢,就用 int a
這樣的寫法。不過考慮到效率和實現(xiàn),這玩意并不是一個新類型。所以就不能用在全局里,或者 struct union 里面,如果你用了這樣的東西,goto 語句就受限制了。
變量聲明不必放在語句塊的開頭,for 語句提倡這么寫 for(int i=0;i
當一個類似結(jié)構(gòu)的東西需要臨時構(gòu)造的時候,可以用(type_name){xx,xx,xx} 這有點像 C++ 的構(gòu)造函數(shù)
初始化結(jié)構(gòu)的時候現(xiàn)在可以這樣寫:
struct {int a[3],b;} hehe[] = { [0].a = {1}, [1].a = 2 };
struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是對 .c,.d 賦值的
字符串里面,\u 支持 unicode 的字符
支持 16 進制的浮點數(shù)的描述
所以 printf scanf 的格式化串多支持了 ll / LL(VC6 里用的 I64)對應(yīng)新的 long long 類型。
浮點數(shù)的內(nèi)部數(shù)據(jù)描述支持了新標準,這個可以用 #pragma 編譯器指定
除了已經(jīng)有的 __line__ __file__ 以外,又支持了一個 __func__ 可以得到當前的函數(shù)名
對于非常數(shù)的表達式,也允許編譯器做化簡
修改了對于/% 處理負數(shù)上的定義,比如老的標準里 -22 / 7 = -3, -22 % 7 = -1 而現(xiàn)在 -22 / 7 = -4, -22 % 7 = 6
取消了不寫函數(shù)返回類型默認就是 int 的規(guī)定
允許 struct 定義的最后一個數(shù)組寫做 [] 不指定其長度描述
const const int i;將被當作 const int i;處理
增加和修改了一些標準頭文件,比如定義 bool 的 定義一些標準長度的 int 的
定義復(fù)數(shù)的 定義寬字符的
有點泛型味道的數(shù)學函數(shù) 跟浮點數(shù)有關(guān)的 。
里多了一個 va_copy 可以復(fù)制 ... 的參數(shù)。 里多了個 struct tmx 對 struct tm
做了擴展
輸入輸出對寬字符還有長整數(shù)等做了相應(yīng)的支持
本文來自ChinaUnix博客,如果查看原文請點:
http://blog.chinaunix.net/u/9861/showart_2124132.html
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2