欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

Traditional C

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

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

C89(C90)

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

C89 的主要改動:

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

舉例來說,下面的代碼展示了使用C89標準編寫的程序示例:

#include <stdio.h>

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

    return 0;
}

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

C95

這是對 C89 的一個修訂和擴充,稱為“C89 with Amendment 1”或 C95,嚴格說來并不是一個真正的標準。

C95 的主要改動:

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

C99

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

C99 的主要改動:

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

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

#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標準引入的變長數(shù)組來定義數(shù)組 arr,其大小由變量 n 決定。同時,我們使用了復合字面量來在一行代碼中初始化數(shù)組的元素。

C11

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

舉例來說,下面的代碼展示了使用C11標準引入的匿名結構體和泛型選擇表達式的示例:

#include <stdio.h>

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

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

    return 0;
}

在這個示例中,我們使用了C11標準引入的匿名結構體來定義結構體變量 point,并使用了泛型選擇表達式 _Generic 來根據(jù)變量的類型選擇不同的操作。

C17

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

C17 沒有引入新的語言特性,只對 C11 進行了補充和修正。

C2x

下一個版本的 C 標準,預計將于2022年12月1日完成。

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

總結

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

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

相關文章

  • C語言文件讀寫操作介紹與簡單示例

    C語言文件讀寫操作介紹與簡單示例

    這篇文章主要給大家介紹了關于C語言文件讀寫操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • C語言算法的時間復雜度和空間復雜度

    C語言算法的時間復雜度和空間復雜度

    這篇文章主要介紹了C語言算法的時間復雜度和空間復雜度,算法在編寫成可執(zhí)行程序后,運行時需要耗費時間資源和空間(內(nèi)存)資源,更多相關需要的朋友可以參考一下
    2022-07-07
  • C++指針和數(shù)組:字符和字符串、字符數(shù)組的關聯(lián)和區(qū)別

    C++指針和數(shù)組:字符和字符串、字符數(shù)組的關聯(lián)和區(qū)別

    字符串是一種重要的數(shù)據(jù)類型,但是c語言并沒有顯示的字符串數(shù)據(jù)類型,因為字符串以字符串常量的形式出現(xiàn)或者存儲于字符數(shù)組中。在C++標準模板庫(STL)中提供了string類,實現(xiàn)了對字符串的封裝。
    2022-12-12
  • C語言實現(xiàn)兩個遞減數(shù)列中尋找某一個數(shù)

    C語言實現(xiàn)兩個遞減數(shù)列中尋找某一個數(shù)

    這篇文章主要介紹了C語言實現(xiàn)兩個遞減數(shù)列中尋找某一個數(shù),是一類經(jīng)典的數(shù)組操作算法,需要的朋友可以參考下
    2014-09-09
  • c++訪問修飾符與繼承關系詳解

    c++訪問修飾符與繼承關系詳解

    C++提供了三個修飾符來限定類成員的被訪問權限,分別是public、protected、private,通過限定訪問權限,可以達到程序編寫者想要解決的安全問題和權限問題,本文給大家介紹c++訪問修飾符與繼承關系,感興趣的朋友一起看看吧
    2023-10-10
  • C++ Boost Lockfree超詳細講解使用方法

    C++ Boost Lockfree超詳細講解使用方法

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C語言實現(xiàn)數(shù)字連連看

    C語言實現(xiàn)數(shù)字連連看

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)數(shù)字連連看游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解C語言初階之函數(shù)

    詳解C語言初階之函數(shù)

    這篇文章主要介紹了C語言中的初階函數(shù),介紹了其相關概念,具有一定參考價值。需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-11-11
  • 詳解C++ 模板編程

    詳解C++ 模板編程

    模板(template)是C++實現(xiàn)泛型(Generics)和元編程(Meta Programming)的基礎。本文拋磚引玉,簡要介紹C++模板編程,不足之處敬請指正。
    2020-09-09
  • vscode+leetcode環(huán)境配置方法

    vscode+leetcode環(huán)境配置方法

    這篇文章主要介紹了vscode+leetcode環(huán)境配置,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論