最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言歷史與演化—C89、C99、C11、C17、C2x

 更新時間:2024年11月16日 09:15:20   作者:販賣月光的小女孩  
C語言作為一門古老而受歡迎的編程語言,經(jīng)歷了多個版本的演進(jìn)和標(biāo)準(zhǔn)化,本文將深入解析C語言的四套標(biāo)準(zhǔn),即C89、C99、C11和C17,通過具體實例說明每個標(biāo)準(zhǔn)引入的新特性和改進(jìn)

C語言作為一門古老而受歡迎的編程語言,經(jīng)歷了多個版本的演進(jìn)和標(biāo)準(zhǔn)化,本文將深入解析C語言的四套標(biāo)準(zhǔn),即C89、C99、C11和C17,通過具體實例說明每個標(biāo)準(zhǔn)引入的新特性和改進(jìn)。

Traditional C

此時的 C 語言還沒有標(biāo)準(zhǔn)化,來自“C Programming Language, First Edition, by Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall PTR 1978”的 C 描述可算作“正式”的標(biāo)準(zhǔn),所以此時的 C 也稱為“K&R” C。

期間 C 語言一直不斷的發(fā)生細(xì)微的變化,各編譯器廠商也有自己的擴(kuò)展,這個過程一直持續(xù)到20世紀(jì)80年代末。

C89(C90)

C89(也稱為C90)是C語言的最早版本的標(biāo)準(zhǔn),于1989年發(fā)布。它定義了C語言的基本語法、關(guān)鍵字和數(shù)據(jù)類型,并引入了標(biāo)準(zhǔn)庫函數(shù),如stdio.h和stdlib.h等。C89的特點(diǎn)是簡潔、可移植且易于理解,被廣泛應(yīng)用于各種計算機(jī)平臺。

C89 的主要改動:

  • 定義了 C 標(biāo)準(zhǔn)庫;
  • 新的預(yù)處理命令和特性;
  • 函數(shù)原型(prototype);
  • 新關(guān)鍵字:const、volatile、signed;
  • 寬字符、寬字符串和多字節(jié)字符;
  • 轉(zhuǎn)化規(guī)則、聲明(declaration)、類型檢查的改變。

舉例來說,下面的代碼展示了使用C89標(biāo)準(zhǔn)編寫的程序示例:

#include <stdio.h>

int main() {
    printf("Hello, C89!\n");

    return 0;
}

在這個示例中,我們使用了C89標(biāo)準(zhǔn)的頭文件 <stdio.h> 和函數(shù) printf 來輸出一條信息。

C95

這是對 C89 的一個修訂和擴(kuò)充,稱為“C89 with Amendment 1”或 C95,嚴(yán)格說來并不是一個真正的標(biāo)準(zhǔn)。

C95 的主要改動:

  • 3個新標(biāo)準(zhǔn)頭文件:iso646.h、wctype.h、wchar.h;
  • 一些新的標(biāo)記(token)和宏(macro);
  • 一些新的 printf/scanf 系列函數(shù)的格式符;
  • 增加了大量的寬字符和多字節(jié)字符函數(shù)、常數(shù)和類型。

C99

C99標(biāo)準(zhǔn)于1999年發(fā)布,對C語言進(jìn)行了擴(kuò)展和改進(jìn)。它引入了一些新特性,如變長數(shù)組、復(fù)合字面量、單行注釋等。C99還提供了更靈活的變量聲明和初始化方式,允許在代碼中聲明變量的同時進(jìn)行初始化。

C99 的主要改動:

  • 復(fù)數(shù)(complex);
  • 整數(shù)(integer)類型擴(kuò)展;
  • 變長數(shù)組;
  • Boolean 類型;
  • 非英語字符集的更好支持;
  • 浮點(diǎn)類型的更好支持;
  • 提供全部類型的數(shù)學(xué)函數(shù);
  • C++ 風(fēng)格注釋(//)。

舉例來說,下面的代碼展示了使用C99標(biāo)準(zhǔn)引入的變長數(shù)組和復(fù)合字面量的示例:

#include <stdio.h>

int main() {
    int n = 5;
    int arr[n]; // 變長數(shù)組

    for (int i = 0; i < n; i++) {
        arr[i] = i + 1;
    }

    printf("Array: { ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("}\n");

    return 0;
}

在這個示例中,我們使用了C99標(biāo)準(zhǔn)引入的變長數(shù)組來定義數(shù)組 arr,其大小由變量 n 決定。同時,我們使用了復(fù)合字面量來在一行代碼中初始化數(shù)組的元素。

C11

C11標(biāo)準(zhǔn)于2011年發(fā)布,是對C語言的又一次改進(jìn)和擴(kuò)展。它引入了一些新特性,如匿名結(jié)構(gòu)體、泛型選擇表達(dá)式、多線程支持等。C11還對一些現(xiàn)有特性進(jìn)行了細(xì)微的改進(jìn)和修正,提高了語言的表達(dá)能力和可靠性。

舉例來說,下面的代碼展示了使用C11標(biāo)準(zhǔn)引入的匿名結(jié)構(gòu)體和泛型選擇表達(dá)式的示例:

#include <stdio.h>

int main() {
    struct {
        int x;
        int y;
    } point = { .x = 5, .y = 10 }; // 匿名結(jié)構(gòu)體

    _Generic(point, 
             struct { int x; int y; }: printf("Point: (%d, %d)\n", point.x, point.y),
             default: printf("Invalid data type!\n")); // 泛型選擇表達(dá)式

    return 0;
}

在這個示例中,我們使用了C11標(biāo)準(zhǔn)引入的匿名結(jié)構(gòu)體來定義結(jié)構(gòu)體變量 point,并使用了泛型選擇表達(dá)式 _Generic 來根據(jù)變量的類型選擇不同的操作。

C17

C17(也被稱為為 C18)是于2018年6月發(fā)布的 ISO/IEC 9899:2018 的非正式名稱,也是目前(截止到2020年6月)為止最新的 C語言編程標(biāo)準(zhǔn),被用來替代 C11 標(biāo)準(zhǔn)。

C17 沒有引入新的語言特性,只對 C11 進(jìn)行了補(bǔ)充和修正。

C2x

下一個版本的 C 標(biāo)準(zhǔn),預(yù)計將于2022年12月1日完成。

有許多人提出想為 C 語言添加面向?qū)ο蟮奶匦裕ㄔ黾宇?、繼承、多態(tài)等已被 C++ 語言所廣泛使用的語法特性,但是最終被委員會駁回了。因為這些復(fù)雜的語法特性并不符合 C 語言的設(shè)計理念以及設(shè)計哲學(xué),況且 C++ 已經(jīng)有了這些特性,C 語言無需再對它們進(jìn)行支持。

總結(jié)

C語言的四套標(biāo)準(zhǔn)(C89、C99、C11和C17)代表了C語言的演進(jìn)和改進(jìn)過程。每個標(biāo)準(zhǔn)引入了新特性和改進(jìn),為程序員提供了更強(qiáng)大和靈活的編程工具。通過具體實例的說明,我們深入探討了每個標(biāo)準(zhǔn)的特點(diǎn)和新特性,幫助你了解C語言的不同版本,并為你在實際編程中選擇合適的標(biāo)準(zhǔn)提供了指導(dǎo)。

到此這篇關(guān)于C語言歷史與演化—C89、C99、C11、C17、C2x的文章就介紹到這了,更多相關(guān)C89、C99、C11、C17、C2x內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VSCode 使用 Code Runner 插件無法編譯運(yùn)行文件名帶空格的文件問題

    VSCode 使用 Code Runner 插件無法編譯運(yùn)行文件名帶空格的文件問題

    這篇文章主要介紹了VSCode 使用 Code Runner 插件無法編譯運(yùn)行文件名帶空格的文件問題,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)二叉樹基本操作詳解

    C++實現(xiàn)二叉樹基本操作詳解

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)二叉樹基本操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 詳解 linux c++的編譯器g++的基本使用

    詳解 linux c++的編譯器g++的基本使用

    這篇文章主要介紹了詳解 linux c++的編譯器g++的基本使用的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Qt5.9程序打包發(fā)布的實現(xiàn)

    Qt5.9程序打包發(fā)布的實現(xiàn)

    本文主要介紹了Qt5.9程序打包發(fā)布的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言實現(xiàn)隨機(jī)發(fā)牌

    C語言實現(xiàn)隨機(jī)發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)隨機(jī)發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • EasyC++?右值引用

    EasyC++?右值引用

    這篇文章主要介紹了C++?右值引用,右值引用指的是以引用傳遞(而非值傳遞)的方式使用?C++?右值,下面文章將對此詳細(xì)介紹,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • C語言互換最大值與最小值的位置

    C語言互換最大值與最小值的位置

    大家好,本篇文章主要講的是C語言互換最大值與最小值的位置,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 詳解C++中單繼承與多繼承的使用

    詳解C++中單繼承與多繼承的使用

    C++的繼承機(jī)制相對其他語言是比較復(fù)雜的一種,不同于java只支持單繼承,C++不僅支持單繼承,也支持多繼承。本文將詳細(xì)講解C++中單繼承與多繼承的使用,需要的可以參考一下
    2022-04-04
  • 最大子矩陣問題實例解析

    最大子矩陣問題實例解析

    這篇文章主要介紹了最大子矩陣問題實例解析,分別列舉了Java和C語言的相關(guān)實現(xiàn),需要的朋友可以參考下
    2015-08-08
  • C++中cin的返回值問題

    C++中cin的返回值問題

    這篇文章主要介紹了C++中cin的返回值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

新兴县| 新绛县| 石狮市| 尉犁县| 广南县| 扎兰屯市| 双牌县| 乐至县| 和政县| 许昌县| 越西县| 兴宁市| 墨脱县| 如东县| 行唐县| 乐都县| 鲁山县| 鹰潭市| 永德县| 临朐县| 乌拉特后旗| 郴州市| 桐柏县| 西贡区| 卫辉市| 重庆市| 大埔县| 沿河| 修文县| 河北省| 徐汇区| 新密市| 牙克石市| 高安市| 文登市| 奇台县| 长兴县| 仁寿县| 灵山县| 宝坻区| 陆丰市|