介紹一些編程語(yǔ)言—C語(yǔ)言
C語(yǔ)言
簡(jiǎn)介
C 語(yǔ)言是一門面向過(guò)程的計(jì)算機(jī)編程語(yǔ)言,與 C++、C#、Java 等面向?qū)ο缶幊陶Z(yǔ)言有所不同。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、僅產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
C語(yǔ)言描述問(wèn)題比匯編語(yǔ)言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語(yǔ)言相當(dāng)。C 語(yǔ)言一般只比匯編語(yǔ)言代碼生成的目標(biāo)程序效率低 10 % 10\% 10% 至 20 % 20\% 20%。因此,C 語(yǔ)言可以編寫系統(tǒng)軟件。
當(dāng)前階段,在編程領(lǐng)域中,C 語(yǔ)言的運(yùn)用非常之多,它兼顧了高級(jí)語(yǔ)言和匯編語(yǔ)言的優(yōu)點(diǎn),相較于其它編程語(yǔ)言具有較大優(yōu)勢(shì)。計(jì)算機(jī)系統(tǒng)設(shè)計(jì)以及應(yīng)用程序編寫是 C 語(yǔ)言應(yīng)用的兩大領(lǐng)域。同時(shí),C 語(yǔ)言的普適較強(qiáng),在許多計(jì)算機(jī)操作系統(tǒng)中都能夠得到適用,且效率顯著。
C 語(yǔ)言擁有經(jīng)過(guò)了漫長(zhǎng)發(fā)展歷史的完整的理論體系,在編程語(yǔ)言中具有舉足輕重的地位。
發(fā)展歷史
C 語(yǔ)言誕生于美國(guó)的貝爾實(shí)驗(yàn)室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·藍(lán)·湯普森(Kenneth Lane Thompson)設(shè)計(jì)的 B 語(yǔ)言為基礎(chǔ)發(fā)展而來(lái),在它的主體設(shè)計(jì)完成后,湯普森和里奇用它完全重寫了 UNIX,且隨著 UNIX 的發(fā)展,C 語(yǔ)言也得到了不斷的完善。為了利于 C 語(yǔ)言的全面推廣,許多專家學(xué)者和硬件廠商聯(lián)合組成了 C 語(yǔ)言標(biāo)準(zhǔn)委員會(huì),并在之后的 1989 1989 1989 年,誕生了第一個(gè)完備的 C 標(biāo)準(zhǔn),簡(jiǎn)稱 C89,也就是“ANSI C”,截至 2020 2020 2020 年,最新的 C 語(yǔ)言標(biāo)準(zhǔn)為 2018 2018 2018 年 6 6 6 月發(fā)布的 C18。
1967 1967 1967 年,劍橋大學(xué)的 Martin Richards 對(duì) CPL 語(yǔ)言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了 BCPL(Basic Combined Programming Language)語(yǔ)言。也就是 B 語(yǔ)言。
20 20 20 世紀(jì) 60 60 60 年代,美國(guó) AT&T 公司貝爾實(shí)驗(yàn)室(AT&T Bell Laboratories)的研究員肯·湯普森(Kenneth Lane Thompson)閑來(lái)無(wú)事,手癢難耐,想玩一個(gè)他自己編的,模擬在太陽(yáng)系航行的電子游戲——Space Travel。他背著老板,找到了臺(tái)空閑的小型計(jì)算機(jī)——PDP-7。但這臺(tái)電腦沒(méi)有操作系統(tǒng),而游戲必須使用操作系統(tǒng)的一些功能,于是他著手為PDP-7開(kāi)發(fā)操作系統(tǒng)。后來(lái),這個(gè)操作系統(tǒng)被命名為——UNICS(Uniplexed Information and Computing Service)。
1969 1969 1969 年,美國(guó)貝爾實(shí)驗(yàn)室的 Ken Thompson,以 BCPL 語(yǔ)言為基礎(chǔ),設(shè)計(jì)出很簡(jiǎn)單且很接近硬件的 B 語(yǔ)言,并且用 B 語(yǔ)言寫了初版 UNIX 操作系統(tǒng)叫作 UNICS。
1971 1971 1971 年,同樣酷愛(ài) Space Travel 的丹尼斯·里奇為了能早點(diǎn)兒玩上游戲,加入了湯普森的開(kāi)發(fā)項(xiàng)目,合作開(kāi)發(fā) UNIX。他的主要工作是改造 B 語(yǔ)言,使其更成熟。
1972 1972 1972 年,美國(guó)貝爾實(shí)驗(yàn)室的丹尼斯·里奇在B語(yǔ)言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語(yǔ)言,他取了 BCPL 的第二個(gè)字母作為這種語(yǔ)言的名字,這就是 C 語(yǔ)言。
1973 1973 1973 年初,C 語(yǔ)言的主體完成。湯普森和里奇迫不及待地開(kāi)始用它完全重寫了 UNIX。此時(shí),編程的樂(lè)趣使他們已經(jīng)完全忘記了那個(gè) Space Travel,一門心思地投入到了 UNIX 和 C 語(yǔ)言的開(kāi)發(fā)中。隨著 UNIX 的發(fā)展,C 語(yǔ)言自身也在不斷地完善。
直到 2020 2020 2020 年,各種版本的 UNIX 內(nèi)核和周邊工具仍然使用C語(yǔ)言作為最主要的開(kāi)發(fā)語(yǔ)言,其中還有不少繼承湯普遜和里奇之手的代碼。
在開(kāi)發(fā)中,他們還考慮把 UNIX 移植到其他類型的計(jì)算機(jī)上使用。C 語(yǔ)言強(qiáng)大的移植性在此顯現(xiàn)。機(jī)器語(yǔ)言和匯編語(yǔ)言都不具有移植性,為 x86 開(kāi)發(fā)的程序,不可能在 Alpha、SPARC 和 ARM 等機(jī)器上運(yùn)行。而 C 語(yǔ)言程序則可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的 C 語(yǔ)言編譯器和庫(kù),然后將 C 源代碼編譯、連接成目標(biāo)二進(jìn)制文件之后即可在哪種架構(gòu)的處理器運(yùn)行。
1977 1977 1977年,丹尼斯·里奇發(fā)表了不依賴于具體機(jī)器系統(tǒng)的 C 語(yǔ)言編譯文本《可移植的 C 語(yǔ)言編譯程序》。
C 語(yǔ)言繼續(xù)發(fā)展,在 1982 1982 1982 年,很多有識(shí)之士和美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)為了使 C 語(yǔ)言健康地發(fā)展下去,決定成立C 標(biāo)準(zhǔn)委員會(huì),建立 C 語(yǔ)言的標(biāo)準(zhǔn)。委員會(huì)由硬件廠商、編譯器及其他軟件工具生產(chǎn)商、軟件設(shè)計(jì)師、顧問(wèn)、學(xué)術(shù)界人士、C 語(yǔ)言作者和應(yīng)用程序員組成。
1989 1989 1989 年,ANSI 發(fā)布了第一個(gè)完整的 C 語(yǔ)言標(biāo)準(zhǔn)——ANSI X3.159-1989,簡(jiǎn)稱 C89,不過(guò)人們也習(xí)慣稱其為“ANSI C”。C89 在 1990 1990 1990 年被國(guó)際標(biāo)準(zhǔn)化組織—ISO,一字不改地采納,ISO 官方給予的名稱為:ISO/IEC 9899,所以 ISO/IEC9899:1990 也通常被簡(jiǎn)稱為“C90”。1999年,在做了一些必要的修正和完善后,ISO發(fā)布了新的C語(yǔ)言標(biāo)準(zhǔn),命名為ISO/IEC 9899:1999,簡(jiǎn)稱 C99。
在 2011 2011 2011 年 12 12 12 月 8 8 8 日,ISO 又正式發(fā)布了新的標(biāo)準(zhǔn),稱為 ISO/IEC9899:2011,簡(jiǎn)稱為 C11。
語(yǔ)言特點(diǎn)
主要特點(diǎn)
C 語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,它有著清晰的層次,可按照模塊的方式對(duì)程序進(jìn)行編寫,十分有利于程序的調(diào)試,且 C 語(yǔ)言的處理和表現(xiàn)能力都非常的強(qiáng)大,依靠非常全面的運(yùn)算符和多樣的數(shù)據(jù)類型,可以輕易完成各種數(shù)據(jù)結(jié)構(gòu)的構(gòu)建,通過(guò)指針類型更可對(duì)內(nèi)存直接尋址以及對(duì)硬件進(jìn)行直接操作,因此既能夠用于開(kāi)發(fā)系統(tǒng)程序,也可用于開(kāi)發(fā)應(yīng)用軟件。通過(guò)對(duì)C語(yǔ)言進(jìn)行研究分析,總結(jié)出其主要特點(diǎn)如下:
- 簡(jiǎn)潔的語(yǔ)言
C語(yǔ)言包含的各種控制語(yǔ)句僅有 9 9 9 種,關(guān)鍵字也只有32個(gè),程序的編寫要求不嚴(yán)格且以小寫字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。實(shí)際上,語(yǔ)句構(gòu)成與硬件有關(guān)聯(lián)的較少,且 C 語(yǔ)言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,故 C 語(yǔ)言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
- 具有結(jié)構(gòu)化的控制語(yǔ)句
C 語(yǔ)言是一種結(jié)構(gòu)化的語(yǔ)言,提供的控制語(yǔ)句具有結(jié)構(gòu)化特征,可以用于實(shí)現(xiàn)函數(shù)的邏輯控制,方便面向過(guò)程的程序設(shè)計(jì)。
- 豐富的數(shù)據(jù)類型
C 語(yǔ)言包含的數(shù)據(jù)類型廣泛,不僅包含有傳統(tǒng)的字符型、整型、浮點(diǎn)型、數(shù)組類型等數(shù)據(jù)類型,還具有其他編程語(yǔ)言所不具備的數(shù)據(jù)類型,其中以指針類型數(shù)據(jù)使用最為靈活,可以通過(guò)編程對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算。
- 豐富的運(yùn)算符
C 語(yǔ)言包含 34 34 34 個(gè)運(yùn)算符,它將賦值、括號(hào)等均視作運(yùn)算符來(lái)操作,使 C 程序的表達(dá)式類型和運(yùn)算符類型均非常豐富。
- 可對(duì)物理地址進(jìn)行直接操作
C 語(yǔ)言允許對(duì)硬件內(nèi)存地址進(jìn)行直接讀寫,以此可以實(shí)現(xiàn)匯編語(yǔ)言的主要功能,并可直接操作硬件。C 語(yǔ)言不但具備高級(jí)語(yǔ)言所具有的良好特性,又包含了許多低級(jí)語(yǔ)言的優(yōu)勢(shì),故在系統(tǒng)軟件編程領(lǐng)域有著廣泛的應(yīng)用。
- 代碼具有較好的可移植性
C 語(yǔ)言是面向過(guò)程的編程語(yǔ)言,在用 C 語(yǔ)言實(shí)現(xiàn)相同功能時(shí)的代碼基本一致,不需或僅需進(jìn)行少量改動(dòng)便可完成移植,從而極大的減少了程序移植的工作強(qiáng)度。
- 可生成高質(zhì)量、目標(biāo)代碼執(zhí)行效率高的程序
與其他高級(jí)語(yǔ)言相比,C 語(yǔ)言可以生成高質(zhì)量和高效率的目標(biāo)代碼,故通常應(yīng)用于對(duì)代碼質(zhì)量和執(zhí)行效率要求較高的嵌入式系統(tǒng)程序的編寫。
特有特點(diǎn)
C 語(yǔ)言是普適性最強(qiáng)的一種計(jì)算機(jī)程序編輯語(yǔ)言,它不僅可以發(fā)揮出高級(jí)編程語(yǔ)言的功用,還具有匯編語(yǔ)言的優(yōu)點(diǎn),因此相對(duì)于其它編程語(yǔ)言,它具有自己獨(dú)特的特點(diǎn)。具體體現(xiàn)為以下三個(gè)方面:
-
其一,廣泛性。C 語(yǔ)言的運(yùn)算范圍的大小直接決定了其優(yōu)劣性。C 語(yǔ)言中包含了 34 34 34 種運(yùn)算符,因此運(yùn)算范圍要超出許多其它語(yǔ)言,此外其運(yùn)算結(jié)果的表達(dá)形式也十分豐富。此外,C 語(yǔ)言包含了字符型、指針型等多種數(shù)據(jù)結(jié)構(gòu)形式,因此,更為龐大的數(shù)據(jù)結(jié)構(gòu)運(yùn)算它也可以應(yīng)付。
-
其二,簡(jiǎn)潔性。 9 9 9 類控制語(yǔ)句和 32 32 32 個(gè)關(guān)鍵字是 C 語(yǔ)言所具有的基礎(chǔ)特性,使得其在計(jì)算機(jī)應(yīng)用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時(shí)還能夠支持高級(jí)編程,避免了語(yǔ)言切換的繁瑣。
-
其三,結(jié)構(gòu)完善。C 語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,它可以通過(guò)組建模塊單位的形式實(shí)現(xiàn)模塊化的應(yīng)用程序,在系統(tǒng)描述方面具有顯著優(yōu)勢(shì),同時(shí)這一特性也使得它能夠適應(yīng)多種不同的編程要求,且執(zhí)行效率高。
缺點(diǎn)
-
C 語(yǔ)言的缺點(diǎn)主要表現(xiàn)為數(shù)據(jù)的封裝性弱,這一點(diǎn)使得 C 語(yǔ)言在數(shù)據(jù)的安全性上有很大缺陷,這也是 C 和 C++ 的一大區(qū)別。
-
C 語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。也就是說(shuō),對(duì)用 C 語(yǔ)言的人,要求對(duì)程序設(shè)計(jì)更熟練一些。
編程開(kāi)發(fā)編輯
編譯器
GCC,GNU 組織開(kāi)發(fā)的開(kāi)源免費(fèi)的編譯器
MinGW,Windows 操作系統(tǒng)下的 GCC
Clang,開(kāi)源的BSD協(xié)議的基于 LLVM 的編譯器
Visual C++ :: cl.exe,Microsoft VC++ 自帶的編譯器
集成開(kāi)發(fā)環(huán)境
Code::Blocks,開(kāi)源免費(fèi)的 C/C++ IDE
CodeLite,開(kāi)源、跨平臺(tái)的 C/C++ 集成開(kāi)發(fā)環(huán)境
Dev-C++,可移植的 C/C++IDE
C-Free
Light Table文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-646353.html
Visual Studio 系列文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-646353.html
簡(jiǎn)單程序
打印 Hello World!
#include <stdio.h>
int main(){
printf("Hello, World! \n");
return 0;
}
計(jì)算 A + B problem
#include <stdio.h>
int main(){
int a, b;
scanf("%d%d", &a, &b);
printf("%d", a + b);
return 0;
}
判斷奇偶數(shù)
#include <stdio.h>
int main(){
int a;
scanf("%d", &a);
if(a % 2 == 0) {
printf("是偶數(shù)");
}
else {
printf("是奇數(shù)");
}
return 0;
}
計(jì)算 1 + 2 + 3 + ? + ( n ? 1 ) + n 1+2+3+\dots+(n?1)+n 1+2+3+?+(n?1)+n 的值
#include <stdio.h>
int main(){
int n, sum;
scanf("%d", &n);
int i;
for(i = 1; i <= n; i ++) {
sum += i;
}
printf("%d", sum);
return 0;
}
到了這里,關(guān)于介紹一些編程語(yǔ)言—C語(yǔ)言的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!