乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C89和C99標準比較

       king9413 2010-03-24

      注: GCC支持C99, 通過 --std=c99 命令行參數(shù)開啟,如:
        
      代碼:
      gcc --std=c99 test.c
      --------------------------------------------------------------------------------------------------
        
        1、增加restrict指針
        C99中增加了公適用于指針的restrict類型修飾符,它是初始訪問指針所指對象的惟一途徑,因此只
      有借助restrict指針表達式才能訪問對象。restrict指針指針主要用做函數(shù)變元,或者指向由malloc()函
      數(shù)所分配的內(nèi)存變量。restrict數(shù)據(jù)類型不改變程序的語義。
        如果某個函數(shù)定義了兩個restrict指針變元,編譯程序就假定它們指向兩個不同的對象,memcpy()
      函數(shù)就是restrict指針的一個典型應用示例。C89中memcpy()函數(shù)原型如下:
      代碼:
        void *memcpy (void *s1, const void *s2, size_t size);  如果s1和s2所指向的對象重疊,
      其操作就是未定義的。memcpy()函數(shù)只能用于不重疊的對象。C99中memcpy()函數(shù)原型如下:
      代碼:
        
        void *memcpy(void *restrict s1, const void *restrict s2,size_t size);  通過使用restrict
      修飾s1和s2 變元,可確保它們在該原型中指向不同的對象。
        2、inline(內(nèi)聯(lián))關(guān)鍵字
        內(nèi)聯(lián)函數(shù)除了保持結(jié)構(gòu)化和函數(shù)式的定義方式外,還能使程序員寫出高效率的代碼.函數(shù)的每次調(diào)用與
      返回都會消耗相當大的系統(tǒng)資源,尤其是當函數(shù)調(diào)用發(fā)生在重復次數(shù)很多的循環(huán)語句中時.一般情況下,當發(fā)
      生一次函數(shù)調(diào)用時,變元需要進棧,各種寄存器內(nèi)存需要保存.當函數(shù)返回時,寄存器的內(nèi)容需要恢復。如果該
      函數(shù)在代碼內(nèi)進行聯(lián)機擴展,當代碼執(zhí)行時,這些保存和恢復操作旅游活動會再發(fā)生,而且函數(shù)調(diào)用的執(zhí)
      行速度也會大大加快。函數(shù)的聯(lián)機擴展會產(chǎn)生較長的代碼,所以只應該內(nèi)聯(lián)對應用程序性能有顯著影響的
      函數(shù)以及長度較短的函數(shù)。
       
        3、新增數(shù)據(jù)類型 
        _Bool 
        值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾<stdbool.h>,以便程序
      員能夠編寫同時兼容于C與C++的應用程序。在編寫新的應用程序時,應該使用
      <stdbool.h>頭文件中的bool宏。
        _Complex and _Imaginary
       C99標準中定義的復數(shù)類型如下:float_Complex; float_Imaginary; double_Complex;
      double_Imaginary; long double_Complex; long double_Imaginary.
      <complex.h>頭文件中定義了complex和imaginary宏,并將它們擴展為_Complex和_Imaginary,
      因此在編寫新的應用程序時,應該使用<stdbool.h>頭文件中的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位。
        4、對數(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沒有任何意義。
        5、單行注釋
        引入了單行注釋標記 "http://" , 可以象C++一樣使用這種注釋了。
        6、分散代碼與聲明
        7、預處理程序的修改
       ?。帷⒆冊斜?br>  宏可以帶變元,在宏定義中用省略號(...)表示。內(nèi)部預處理標識符__VA_ARGS__決定變元將在何
      處得到替換。例:#define MySum(...) sum(__VA_ARGS__) 語句MySum(k,m,n);
      將被轉(zhuǎn)換成:sum(k, m, n); 變元還可以包含變元。例: #define compare(compf, ...)
      compf(__VA_ARGS__) 其中的compare(strcmp,"small", "large"); 將替換成:
      strcmp("small","large");
       ?。狻Pragma運算符
        C99引入了在程序中定義編譯指令的另外一種方法:_Pragma運算符。格式如下:
        _Pragma("directive")
        其中directive是要滿打滿算的編譯指令。_Pragma運算符允許編譯指令參與宏替換。
       ?。?、內(nèi)部編譯指令
        STDCFP_CONTRACT ON/OFF/DEFAULT 若為ON,浮點表達式被當做基于硬件方式處理的獨立
      單元。默認值是定義的工具。
        STDCFEVN_ACCESS ON/OFF/DEFAULT 告訴編譯程序可以訪問浮點環(huán)境。默認值是定義的工具。
        STDC CX_LIMITED_RANGE ON/OFF/DEFAULT 若值為ON,相當于告訴編譯程序某程序某些含
      有復數(shù)的公式是可靠的。默認是OFF。
       ?。?、新增的內(nèi)部宏
        __STDC_HOSTED__ 若操作系統(tǒng)存在,則為1
        __STDC_VERSION__ 199991L或更高。代表C的版本
        __STDC_IEC_599__ 若支持IEC 60559浮點運算,則為1
        __STDC_IEC_599_COMPLEX__ 若支持IEC 60599復數(shù)運算,則為1
        __STDC_ISO_10646__ 由編譯程序支持,用于說明ISO/IEC 10646標準的年和月格式:
      yyymmmL
        8、for語句內(nèi)的變量聲明  
        C99中,程序員可以在for語句的初始化部分定義一個或多個變量,這些變量的作用域僅于本for語
      句所控制的循環(huán)體內(nèi)。比如:
      代碼:
      for(int i=0; i<10; i++){
          // do someting ...
      }
        9、復合賦值
        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)建立的復合賦值是局部對象,在退出模塊后
      不再存在。
        10、柔性數(shù)組結(jié)構(gòu)成員
        C99中,結(jié)構(gòu)中的最后一個元素允許是未知大小的數(shù)組,這就叫做柔性數(shù)組成員,但結(jié)構(gòu)中的柔性數(shù)
      組成員前面必須至少一個其他成員。柔性數(shù)組成員允許結(jié)構(gòu)中包含一個大小可變的數(shù)組。sizeof返回的這
      種結(jié)構(gòu)大小不包括柔性數(shù)組的內(nèi)存。包含柔性數(shù)組成員的結(jié)構(gòu)用malloc()函數(shù)進行內(nèi)存的動態(tài)分配,并且
      分配的內(nèi)存應該大于結(jié)構(gòu)的大小,以適應柔性數(shù)組的預期大小。
        11、指定的初始化符
        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)成員進行初始化的順序沒有限制。
        12、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,但不起作用。
        13、C99新增的庫
        
        C89中標準的頭文件
        <assert.h> 定義宏assert()
        <ctype.h> 字符處理
        <errno.h> 錯誤報告
        <float.h> 定義與實現(xiàn)相關(guān)的浮點值勤
        <limits.h> 定義與實現(xiàn)相關(guān)的各種極限值
        <locale.h> 支持函數(shù)setlocale()
        <math.h> 數(shù)學函數(shù)庫使用的各種定義
        <setjmp.h> 支持非局部跳轉(zhuǎn)
        <signal.h> 定義信號值
        <stdarg.h> 支持可變長度的變元列表
        <stddef.h> 定義常用常數(shù)
        <stdio.h> 支持文件輸入和輸出
        <stdlib.h> 其他各種聲明
        <string.h> 支持串函數(shù)
        <time.h> 支持系統(tǒng)時間函數(shù)
        C99新增的頭文件和庫
        <complex.h> 支持復數(shù)算法
        <fenv.h> 給出對浮點狀態(tài)標記和浮點環(huán)境的其他方面的訪問
        <inttypes.h> 定義標準的、可移植的整型類型集合。也支持處理最大寬度整數(shù)的函數(shù)
        <iso646.h> 首先在此1995年第一次修訂時引進,用于定義對應各種運算符的宏
        <stdbool.h> 支持布爾數(shù)據(jù)類型類型。定義宏bool,以便兼容于C++
        <stdint.h> 定義標準的、可移植的整型類型集合。該文件包含在<inttypes.h>中
        <tgmath.h> 定義一般類型的浮點宏
        <wchar.h> 首先在1995年第一次修訂時引進,用于支持多字節(jié)和寬字節(jié)函數(shù)
        <wctype.h> 首先在1995年第一次修訂時引進,用于支持多字節(jié)和寬字節(jié)分類函數(shù)
        14、__func__預定義標識符
        用于指出__func__所存放的函數(shù)名,類似于字符串賦值。

        15、其它特性的改動
        放寬的轉(zhuǎn)換限制
       
          限制             C89標準  C99標準
          數(shù)據(jù)塊的嵌套層數(shù)       15     127
          條件語句的嵌套層數(shù)      8      63
          內(nèi)部標識符中的有效字符個數(shù)  31     63
          外部標識符中的有效字符個數(shù)  6      31
          結(jié)構(gòu)或聯(lián)合中的成員個數(shù)    127    1023
          函數(shù)調(diào)用中的參數(shù)個數(shù)     31     127

        不再支持隱含式的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類型.

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多