chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C89和C99標準有什么不同?

strongerHuang ? 來源:嵌入式專欄 ? 2023-01-09 09:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語言是一門經(jīng)典的編程語言,經(jīng)過這么多年,依然是一門很熱的編程語言。
TIOBE 編程語言排行榜中,這幾年C語言基本排名第一、第二,可以說問問的坐在前排。

9fd0fff6-8fba-11ed-bfe3-dac502259ad0.png



今天給大家分享一下C89和C99的區(qū)別。

C標準歷史

C語言的發(fā)展至今超過了50年,之前為大家分享過C語言編譯器的來源其描述了C語言最初的發(fā)展情況。

然后,也分享過一篇《ANSI 的100年發(fā)展歷程》講述了ANSI(美國國家標準協(xié)會)100年的發(fā)展歷史。
這里再次描述一下C89、C99、C11的歷史:
1983 年,美國國家標準協(xié)會(ANSI)組成了一個委員會來創(chuàng)立 C 語言的標準。因為這個標準是 1989年發(fā)布的,所以一般簡稱 C89 標準。有些人也把 C89 標準叫做 ANSI C。

在 1990 年, ANSI C89 標準被國際標準化組織(ISO)和國際電工委員會(IEC)采納為國際標準,名叫ISO/IEC 9899:1990 - Programming languages C,有些人簡稱 C90 標準。因此, C89 和 C90 通常指同一個標準,一般更常用 C89 這種說法。

在 2000 年3 月,國際標準化組織(ISO)和國際電工委員會(IEC)采納了第二個 C 語言標準,名叫 ISO/IEC9899:1999 - Programming languages -- C,簡稱 C99 標準。

在 2011 年 12 月,國際標準化組織(ISO)和國際電工委員會(IEC)采納了第三個 C 語言標準,名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C,簡稱 C11 標準。

對于我們常用的開發(fā)環(huán)境 MDK 和 IAR 而已, C89, C99 和 C11 均支持。


9fdf917e-8fba-11ed-bfe3-dac502259ad0.png

C標準目前C99用的最多的,一般來說,C99兼容C89。

C89和C99主要區(qū)別

這里總結(jié)一下主要區(qū)別:
1.對數(shù)組的增強
可變長數(shù)組

C99中,程序員聲明數(shù)組時,數(shù)組的維數(shù)可以由任一有效的整型表達式確定,包括只在運行時才能確定其值的表達式,這類數(shù)組就叫做可變長數(shù)組。

但是只有局部數(shù)組才可以是變長的,可變長數(shù)組的維數(shù)在數(shù)組生存期內(nèi)是不變的,也就是說,可變長數(shù)組不是動態(tài)的,可以變化的只是數(shù)組的大小,可以使用*來定義不確定長的可變長數(shù)組。
數(shù)組聲明中的類型修飾符
在C99中,如果需要使用數(shù)組作為函數(shù)變元,可以在數(shù)組聲明的方括號內(nèi)使用static關(guān)鍵字,這相當于告訴編譯程序,變元所指向的數(shù)組將至少包含指定的元素個數(shù)。也可以在數(shù)組聲明的方括號內(nèi)使用restrict,volatile,const關(guān)鍵字,但只用于函數(shù)變元。如果使用restrict,指針是初始訪問該對象的惟一途徑。




如果使用const,指針始終指向同一個數(shù)組。使用volatile沒有任何意義。
2.單行注釋

引入了單行注釋標記 "http://" , 可以象C++一樣使用這種注釋了。


3.分散代碼與聲明

預處理程序的修改
4.for語句內(nèi)的變量聲明

C99中,程序員可以在for語句的初始化部分定義一個或多個變量,這些變量的作用域僅于本for語句所控制的循環(huán)體內(nèi)。比如代碼:
for(int i=0; i<10; i++){




    // do someting ...




}

5.復合賦值

C99中,復合賦值中,可以指定對象類型的數(shù)組、結(jié)構(gòu)或聯(lián)合表達式。當使用復合賦值時,應在括弧內(nèi)指定類型,后跟由花括號圍起來的初始化列表;若類型為數(shù)組,則不能指定數(shù)組的大小。建成的對象是未命名的。
例:
double *fp = (double[]) {1.1, 2.2, 3.3};


該語句用于建立一個指向double的指針fp,且該指針指向這個3元素數(shù)組的第一個元素。在文件域內(nèi)建立的復合賦值只在程序的整個生存期內(nèi)有效。在模塊內(nèi)建立的復合賦值是局部對象,在退出模塊后不再存在。

6.指定的初始化符

C99中,該特性對經(jīng)常使用稀疏數(shù)組的程序員十分有用。指定的初始化符通常有兩種用法:用于數(shù)組,以及用于結(jié)構(gòu)和聯(lián)合。用于數(shù)組的格式:[index] = vol; 其中,index表示數(shù)組的下標,vol表示本數(shù)組元素的初始化值。
例如:
int x[10] = {[0] = 10, [5] = 30};


其中只有x[0]和x[5]得到了初始化.用于結(jié)構(gòu)或聯(lián)合的格式如下:

member-name(成員名稱)
對結(jié)構(gòu)進行指定的初始化時,允許采用簡單的方法對結(jié)構(gòu)中的指定成員進行初始化。
例如:
struct example{ int k, m, n; } object = {m = 10,n = 200};


其中,沒有初始化k。對結(jié)構(gòu)成員進行初始化的順序沒有限制。
7.printf()和scanf()函數(shù)系列的增強
C99中printf()和scanf()函數(shù)系列引進了處理long long int和unsigned long long int數(shù)據(jù)類型的特性。long long int 類型的格式修飾符是ll。
在printf()和scanf()函數(shù)中,ll適用于d, i, o, u 和x格式說明符。
另外,C99還引進了hh修飾符。當使用d, i, o, u和x格式說明符時,hh用于指定char型變元。ll和hh修飾符均可以用于n說明符。
格式修飾符a和A用在printf()函數(shù)中時,結(jié)果將會輸出十六進制的浮點數(shù)。格式如下:[-]0xh, hhhhp + d 使用A格式修飾符時,x和p必須是大寫。A和a格式修飾符也可以用在scanf()函數(shù)中,用于讀取浮點數(shù)。調(diào)用printf()函數(shù)時,允許在%f說明符前加上l修飾符,即%lf,但不起作用。
8.C99新增的庫
C89中標準的頭文件:
  • 定義宏assert()


  • 字符處理


  • 錯誤報告


  • 定義與實現(xiàn)相關(guān)的浮點值勤


  • 定義與實現(xiàn)相關(guān)的各種極限值


  • 支持函數(shù)setlocale()


  • 數(shù)學函數(shù)庫使用的各種定義


  • 支持非局部跳轉(zhuǎn)




  • 支持可變長度的變元列表


  • 定義常用常數(shù)


  • 支持文件輸入和輸出


  • 其他各種聲明


  • 支持串函數(shù)


  • 支持系統(tǒng)時間函數(shù)

C99新增的頭文件和庫
  • 支持復數(shù)算法
  • 給出對浮點狀態(tài)標記和浮點環(huán)境的其他方面的訪問
  • 定義標準的、可移植的整型類型集合。也支持處理最大寬度整數(shù)的函數(shù)
  • 首先在此1995年第一次修訂時引進,用于定義對應各種運算符的宏
  • 支持布爾數(shù)據(jù)類型類型。定義宏bool,以便兼容于C++
  • 定義標準的、可移植的整型類型集合。該文件包含在
  • 定義一般類型的浮點宏
  • 首先在1995年第一次修訂時引進,用于支持多字節(jié)和寬字節(jié)函數(shù)
  • 首先在1995年第一次修訂時引進,用于支持多字節(jié)和寬字節(jié)分類函數(shù)
10.__func__預定義標識符
用于指出__func__所存放的函數(shù)名,類似于字符串賦值。
11.其它特性的改動

放寬的轉(zhuǎn)換限制

限制C89標準C99標準

數(shù)據(jù)塊的嵌套層數(shù)15127
條件語句的嵌套層數(shù)8 63
內(nèi)部標識符中的有效字符個數(shù)3163
外部標識符中的有效字符個數(shù)631
結(jié)構(gòu)或聯(lián)合中的成員個數(shù)1271023
函數(shù)調(diào)用中的參數(shù)個數(shù)31127
不再支持隱含式的int規(guī)則
刪除了隱含式函數(shù)聲明
對返回值的約束
C99中,非空類型函數(shù)必須使用帶返回值的return語句.
擴展的整數(shù)類型
擴展類型 含義
int16_t 整數(shù)長度為精確16位
int_least16_t 整數(shù)長度為至少16位
int_fast32_t 最穩(wěn)固的整數(shù)類型,其長度為至少32位
intmax_t 最大整數(shù)類型
uintmax_t 最大無符號整數(shù)類型
對整數(shù)類型提升規(guī)則的改進:
  • C89中,表達式中類型為char,short int或int的值可以提升為int或unsigned int類型.


  • C99中,每種整數(shù)類型都有一個級別.例如:long long int 的級別高于int, int的級別高于char


  • 等.在表達式中,其級別低于int或unsigned int的任何整數(shù)類型均可被替換成int或unsigned int類型.

12.新增數(shù)據(jù)類型
_Bool
值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾,以便程序員能夠編寫同時兼容于C與C++的應用程序。在編寫新的應用程序時,應該使用頭文件中的bool宏。

_Complex and _Imaginary
C99標準中定義的復數(shù)類型如下:float_Complex; float_Imaginary; double_Complex;double_Imaginary; long double_Complex; long double_Imaginary.
頭文件中定義了complex和imaginary宏,并將它們擴展為_Complex和_Imaginary,因此在編寫新的應用程序時,應該使用頭文件中的complex和imaginary宏。
long long int
C99標準中引進了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能夠支持的整數(shù)長度為64位。
這些是主要區(qū)別,希望對大家有幫助。
審核編輯 :李倩



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7634

    瀏覽量

    143942
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1957

    瀏覽量

    38402

原文標題:C89和C99標準有什么不同?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    rt-thread 在mdk5中使用v6編譯器編譯出錯怎么解決?

    cpuport.c... ArmClang: error: unsupported option \'--c99\' compiling i2c_core.c... ArmClang: error
    發(fā)表于 09-24 07:22

    AT89C51 單片機中文資料

    電子發(fā)燒友網(wǎng)站提供《AT89C51 單片機中文資料.pdf》資料免費下載
    發(fā)表于 06-24 15:29 ?1次下載

    智能新趣玩:啟明云端WT99C202 AI機芯盒,開啟玩具新體驗?

    的想象力和創(chuàng)造力。啟明云端WT99C202AI機芯盒正將這一奇妙設想變?yōu)楝F(xiàn)實,為玩具行業(yè)帶來新的變革,那它是如何做到的呢?AI機芯盒機芯盒配件WT99C202AI
    的頭像 發(fā)表于 03-26 18:12 ?575次閱讀
    智能新趣玩:啟明云端WT<b class='flag-5'>99C</b>202 AI機芯盒,開啟玩具新體驗?

    【新品】搭載ESP32-C2芯片,啟明云端WT99C202-AI語音開發(fā)板震撼來襲,離在線一體

    啟明云端WT99C202-AI智能語音開發(fā)板,搭載樂鑫ESP32-C2芯片,深度融合LLM大模型,實現(xiàn)流暢自然的AI語音交互,廣泛應用于毛絨玩具,潮玩底座,AIoT等應用場景,能夠幫助B端客戶實現(xiàn)
    的頭像 發(fā)表于 03-05 18:08 ?1551次閱讀
    【新品】搭載ESP32-<b class='flag-5'>C</b>2芯片,啟明云端WT<b class='flag-5'>99C</b>202-AI語音開發(fā)板震撼來襲,離在線一體

    MGMF182L1C5-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MGMF182L1C5-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MGMF182L1C5-MINAS A6 系列
    發(fā)表于 02-12 19:14
    MGMF182L1<b class='flag-5'>C</b>5-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    基于OpenHarmony標準系統(tǒng)的C++公共基礎(chǔ)類庫案例:ThreadPoll

    1、程序簡介該程序是基于OpenHarmony標準系統(tǒng)的C++公共基礎(chǔ)類庫的線程池處理:ThreadPoll。本案例完成如下工作:創(chuàng)建1個線程池,設置該線程池內(nèi)部1024個線程空間。啟動5個線程
    的頭像 發(fā)表于 02-10 18:09 ?514次閱讀
    基于OpenHarmony<b class='flag-5'>標準</b>系統(tǒng)的<b class='flag-5'>C</b>++公共基礎(chǔ)類庫案例:ThreadPoll

    MHMF092L1C4-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF092L1C4-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF092L1C4-MINAS A6 系列
    發(fā)表于 01-09 18:56
    MHMF092L1<b class='flag-5'>C</b>4-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    MHMF092L1C3-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF092L1C3-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF092L1C3-MINAS A6 系列
    發(fā)表于 01-08 19:02
    MHMF092L1<b class='flag-5'>C</b>3-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    MHMF092A1C4-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF092A1C4-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF092A1C4-MINAS A6 系列
    發(fā)表于 12-24 19:10
    MHMF092A1<b class='flag-5'>C</b>4-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    MHMF092A1C2-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF092A1C2-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF092A1C2-MINAS A6 系列
    發(fā)表于 12-24 18:51
    MHMF092A1<b class='flag-5'>C</b>2-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    請問ADXL373獨立于平臺的標準C語言驅(qū)動代碼嗎?

    請問ADXL373獨立于平臺的標準C語言驅(qū)動代碼嗎?謝謝
    發(fā)表于 12-19 06:40

    USB-C哪些變化

    USB-C這個小小的標準曾被譽為未來所有線纜需求的解決方案,將電源和數(shù)據(jù)傳輸與顯示和音頻連接統(tǒng)一起來,如今它已經(jīng)實現(xiàn)了開創(chuàng)通用端口時代的目標。然而,USB-C 也變成了約翰·卡朋特 (John
    的頭像 發(fā)表于 11-13 11:26 ?1351次閱讀
    USB-<b class='flag-5'>C</b><b class='flag-5'>有</b>哪些變化

    MHMF082L1C3-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF082L1C3-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF082L1C3-MINAS A6 系列
    發(fā)表于 11-04 19:11
    MHMF082L1<b class='flag-5'>C</b>3-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    MHMF082L1C1-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF082L1C1-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF082L1C1-MINAS A6 系列
    發(fā)表于 11-01 19:18
    MHMF082L1<b class='flag-5'>C</b>1-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下

    MHMF082A1C4-MINAS A6 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF082A1C4-MINAS A6 系列 標準規(guī)格書相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF082A1C4-MINAS A6 系列
    發(fā)表于 10-28 18:46
    MHMF082A1<b class='flag-5'>C</b>4-MINAS A6 系列 <b class='flag-5'>標準</b>規(guī)格書 松下