亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C99 標準新特性

2019-11-10 17:43:41
字體:
來源:轉載
供稿:網友

---------------------------------------------------------------

感謝作者的辛苦付出。

轉自 http://blog.pfan.cn/watersky/14051.html

---------------------------------------------------------------

1、增加restrict指針C99中增加了公適用于指針的restrict類型修飾符,它是初始訪問指針所指對象的惟一途徑,因此只有借助restrict指針表達式才能訪問對象。restrict指針指針主要用做函數變元,或者指向由malloc()函數所分配的內存變量。restrict數據類型不改變程序的語義。如果某個函數定義了兩個restrict指針變元,編譯程序就假定它們指向兩個不同的對象,memcpy()函數就是restrict指針的一個典型應用示例。C89中memcpy()函數原型如下:void *memcpy (void *s1, const void *s2, size_t size);如果s1和s2所指向的對象重疊,其操作就是未定義的。memcpy()函數只能用于不重疊的對象。C99中memcpy()函數原型如下:void *memcpy(void *restrict s1, const void *restrict s2,size_t size);通過使用restrict修飾s1和s2變元,可確保它們在該原型中指向不同的對象。2、inline(內聯)關鍵字內聯函數除了保持結構化和函數式的定義方式外,還能使程序員寫出高效率的代碼。函數的每次調用與返回都會消耗相當大的系統資源,尤其是當函數調用發生在重復次數很多的循環語句中時。一般情況下,當發生一次函數調用時,變量需要進棧,各種寄存器內存需要保存。當函數返回時,寄存器的內容需要恢復。如果該函數在代碼內進行聯機擴展,當代碼執行時,這些保存和恢復操作旅游活動會再發生,而且函數調用的執行速度也會大大加快。函數的聯機擴展會產生較長的代碼,所以只應該內聯對應用程序性能有顯著影響的函數以及長度較短的函數。   3、新增數據類型_Bool值是0或1。C99中增加了用來定義bool、true以及false宏的頭文件夾<stdbool.h>,以便程序員能夠編寫同時兼容于C與C++的應用程序。在編寫新的應用程序時,應該使用<stdbool.h>頭文件中的bool宏。_Complex and _ImaginaryC99標準中定義的復數類型如下: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 intC99標準中引進了long long int(-(2e63 - 1)至2e63 - 1)和unsigned long long int(0 - 2e64 - 1)。long long int能夠支持的整數長度為64位。4、對數組的增強可變長數組C99中,程序員聲明數組時,數組的維數可以由任一有效的整型表達式確定,包括只在運行時才能確定其值的表達式,這類數組就叫做可變長數組,但是只有局部數組才可以是變長的??勺冮L數組的維數在數組生存期內是不變的,也就是說,可變長數組不是動態的.可以變化的只是數組的大小.可以使用*來定義不確定長的可變長數組.    數組聲明中的類型修飾符在C99中,如果需要使用數組作為函數變元,可以在數組聲明的方括號內使用static關鍵字,這相當于告訴編譯程序,變元所指向的數組將至少包含指定的元素個數。也可以在數組聲明的方括號內使用restrict,volatile,const關鍵字,但只用于函數變元。如果使用restrict,指針是初始訪問該對象的惟一途徑。如果使用const,指針始終指向同一個數組。使用volatile沒有任何意義。5、單行注釋引入了單行注釋標記 "//" , 可以象C++一樣使用這種注釋了。6、分散代碼與聲明7、預處理程序的修改a、變元列表宏可以帶變元,在宏定義中用省略號(...)表示。內部預處理標識符__VA_ARGS__決定變元將在何處得到替換。例:#define MySum(...) sum(__VA_ARGS__) 語句MySum(k,m,n);將被轉換成:sum(k, m, n); 變元還可以包含變元。例: #define compare(compf, ...) compf(__VA_ARGS__) 其中的compare(strcmp,"small", "large"); 將替換成:strcmp("small","large");b、_PRagma運算符C99引入了在程序中定義編譯指令的另外一種方法:_Pragma運算符。格式如下:_Pragma("directive") 其中directive是要滿打滿算的編譯指令。_Pragma運算符允許編譯指令參與宏替換。c、內部編譯指令STDCFP_CONTRACT ON/OFF/DEFAULT 若為ON,浮點表達式被當做基于硬件方式處理的獨立單元。默認值是定義的工具。STDCFEVN_access ON/OFF/DEFAULT 告訴編譯程序可以訪問浮點環境。默認值是定義的工具。STDC CX_LIMITED_RANGE ON/OFF/DEFAULT 若值為ON,相當于告訴編譯程序某程序某些含有復數的公式是可靠的。默認是OFF。d、新增的內部宏__STDC_HOSTED__ 若操作系統存在,則為1__STDC_VERSION__ 199991L或更高。代表C的版本__STDC_IEC_599__ 若支持IEC 60559浮點運算,則為1__STDC_IEC_599_COMPLEX__ 若支持IEC 60599復數運算,則為1__STDC_ISO_10646__ 由編譯程序支持,用于說明ISO/IEC 10646標準的年和月格式:yyymmmL8、for語句內的變量聲明  C99中,程序員可以在for語句的初始化部分定義一個或多個變量,這些變量的作用域僅于本for語句所控制的循環體內。比如:代碼:for(int i=0; i<10; i++){     // do someting ... }9、復合賦值C99中,復合賦值中,可以指定對象類型的數組、結構或聯合表達式。當使用復合賦值時,應在括弧內指定類型,后跟由花括號圍起來的初始化列表;若類型為數組,則不能指定數組的大小。建成的對象是未命名的。例: double *fp = (double[]) {1.1, 2.2, 3.3};該語句用于建立一個指向double的指針fp,且該指針指向這個3元素數組的第一個元素。 在文件域內建立的復合賦值只在程序的整個生存期內有效。在模塊內建立的復合賦值是局部對象,在退出模塊后不再存在。10、柔性數組結構成員C99中,結構中的最后一個元素允許是未知大小的數組,這就叫做柔性數組成員,但結構中的柔性數組成員前面必須至少一個其他成員。柔性數組成員允許結構中包含一個大小可變的數組。sizeof返回的這種結構大小不包括柔性數組的內存。包含柔性數組成員的結構用malloc()函數進行內存的動態分配,并且分配的內存應該大于結構的大小,以適應柔性數組的預期大小。11、指定的初始化符C99中,該特性對經常使用稀疏數組的程序員十分有用。指定的初始化符通常有兩種用法:用于數組,以及用于結構和聯合。用于數組的格式:[index] = vol; 其中,index表示數組的下標,vol表示本數組元素的初始化值。例如: int x[10] = {[0] = 10, [5] = 30}; 其中只有x[0]和x[5]得到了初始化.用于結構或聯 合的格式如下: member-name(成員名稱) 對結構進行指定的初始化時,允許采用簡單的方法對結構中的指定成員進行初始化。例如: struct example{ int k, m, n; } object = {m = 10,n = 200}; 其中,沒有初始化k。對結構成員進行初始化的順序沒有限制。12、printf()和scanf()函數系列的增強C99中printf()和scanf()函數系列引進了處理long long int和unsigned long long int數據類型的特性。long long int 類型的格式修飾符是ll。在printf()和scanf()函數中,ll適用于d, i, o, u 和x格式說明符。另外,C99還引進了hh修飾符。當使用d, i, o, u和x格式說明符時,hh用于指定char型變元。ll和hh修飾符均可以用于n說明符。格式修飾符a和A用在printf()函數中時,結果將會輸出十六進制的浮點數。格式如下:[-]0xh, hhhhp + d 使用A格式修飾符時,x和p必須是大寫。A和a格式修飾符也可以用在scanf()函數中,用于讀取浮點數。調用printf()函數時,允許在%f說明符前加上l修飾符,即%lf,但不起作用。13、C99新增的庫   C89中標準的頭文件<assert.h> 定義宏assert()<ctype.h> 字符處理<errno.h> 錯誤報告<float.h> 定義與實現相關的浮點值勤<limits.h> 定義與實現相關的各種極限值<locale.h> 支持函數setlocale()<math.h> 數學函數庫使用的各種定義<setjmp.h> 支持非局部跳轉<signal.h> 定義信號值<stdarg.h> 支持可變長度的變元列表<stddef.h> 定義常用常數<stdio.h> 支持文件輸入和輸出<stdlib.h> 其他各種聲明<string.h> 支持串函數<time.h> 支持系統時間函數C99新增的頭文件和庫<complex.h> 支持復數算法<fenv.h> 給出對浮點狀態標記和浮點環境的其他方面的訪問<inttypes.h> 定義標準的、可移植的整型類型集合。也支持處理最大寬度整數的函數(常見)<iso646.h> 首先在此1995年第一次修訂時引進,用于定義對應各種運算符的宏<stdbool.h> 支持布爾數據類型類型。定義宏bool,以便兼容于C++<stdint.h> 定義標準的、可移植的整型類型集合。該文件包含在<inttypes.h>中(常見)<tgmath.h> 定義一般類型的浮點宏<wchar.h> 首先在1995年第一次修訂時引進,用于支持多字節和寬字節函數<wctype.h> 首先在1995年第一次修訂時引進,用于支持多字節和寬字節分類函數14、__func__預定義標識符用于指出__func__所存放的函數名,類似于字符串賦值。15、其它特性的改動放寬的轉換限制限制                       C89標準 C99標準數據塊的嵌套層數           15      127條件語句的嵌套層數         8       63內部標識符中的有效字符個數 31      63外部標識符中的有效字符個數 6       31結構或聯合中的成員個數     127     1023函數調用中的參數個數       31      127不再支持隱含式的int規則刪除了隱含式函數聲明對返回值的約束C99中,非空類型函數必須使用帶返回值的return語句.擴展的整數類型擴展類型      含義int16_t       整數長度為精確16位int_least16_t 整數長度為至少16位int_fast32_t  最穩固的整數類型,其長度為至少32位intmax_t      最大整數類型uintmax_t     最大無符號整數類型對整數類型提升規則的改進C89中,表達式中類型為char,short int或int的值可以提升為int或unsigned int類型.C99中,每種整數類型都有一個級別.例如:long long int 的級別高于int, int的級別高于char等.在表達式中,其級別低于int或unsigned int的任何整數類型均可被替換成int或unsigned int類型.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
热re99久久精品国产66热| 日韩一区二区欧美| 97成人超碰免| 在线看日韩av| 久久久国产一区二区三区| 欧美日韩激情网| 国产丝袜一区二区三区免费视频| 日产精品久久久一区二区福利| 福利视频导航一区| 精品视频—区二区三区免费| 国产精品视频中文字幕91| 欧亚精品中文字幕| 日韩中文字幕av| 午夜精品免费视频| 欧美精品国产精品日韩精品| 5252色成人免费视频| 欧美刺激性大交免费视频| 欧美精品久久一区二区| 中文字幕欧美视频在线| 成人免费高清完整版在线观看| 亚洲精品动漫100p| 国产精品成人免费电影| 日韩在线视频线视频免费网站| 日韩成人在线电影网| 少妇精69xxtheporn| 日韩电影免费观看在线| 成人在线播放av| 久久久久久美女| 日本电影亚洲天堂| 美女精品久久久| 久久久久久久久电影| 国产精品av网站| 欧美视频第一页| 欧美成人精品在线观看| 精品福利在线观看| 中国日韩欧美久久久久久久久| 精品亚洲国产成av人片传媒| 国产剧情日韩欧美| 欧美最猛性xxxxx亚洲精品| 欧美一级片久久久久久久| 日韩av中文字幕在线播放| 亚洲综合日韩中文字幕v在线| 国产一区二区三区网站| 久久精品视频导航| 欧美日韩一区二区在线播放| 亚洲人成毛片在线播放| 日韩中文字幕精品视频| 亚洲精品之草原avav久久| 国产精品999999| 亚洲免费精彩视频| 欧美日韩亚洲系列| 91精品在线国产| 日韩电影中文字幕在线观看| 亚洲成人精品久久| 亚洲欧美日韩精品久久奇米色影视| 久久久久久国产精品三级玉女聊斋| 中文字幕欧美日韩va免费视频| 成人av在线网址| 国产脚交av在线一区二区| 欧美巨大黑人极品精男| 久久精品国产精品| 国产精品国产三级国产aⅴ浪潮| 激情成人中文字幕| 亚洲精品国产精品久久清纯直播| 日韩av三级在线观看| 久久久亚洲欧洲日产国码aⅴ| 久久人人97超碰精品888| 91av在线免费观看视频| 国产ts人妖一区二区三区| 久久成人av网站| 亚洲国产精品va在线看黑人| 一区二区三区无码高清视频| 色樱桃影院亚洲精品影院| wwwwwwww亚洲| 久久最新资源网| 青青久久av北条麻妃黑人| 久久久久日韩精品久久久男男| 91久久在线视频| 日韩女在线观看| 国产日韩精品在线观看| 7777精品视频| 国产在线视频2019最新视频| 亚洲精品福利视频| 亚洲自拍高清视频网站| 国产精品自产拍在线观看中文| 国产一区二区三区日韩欧美| 久久久久久久久久久免费| 国产日韩一区在线| 欧美裸体xxxx极品少妇软件| 日韩av大片在线| 国产亚洲一区二区在线| 精品视频—区二区三区免费| 国产精品嫩草影院久久久| 欧美极品少妇xxxxⅹ免费视频| 7777精品视频| 91在线免费看网站| 最好看的2019的中文字幕视频| 久久久久国产精品免费网站| 国产成人在线精品| 亚洲视频自拍偷拍| 亚洲有声小说3d| 九九九热精品免费视频观看网站| 国产丝袜一区二区三区| 精品视频—区二区三区免费| 国产精品海角社区在线观看| 国产日韩欧美影视| 午夜精品久久久久久久99热浪潮| 国产精品18久久久久久麻辣| 成人黄色中文字幕| 国产成人亚洲综合青青| 成人午夜高潮视频| 色婷婷成人综合| 国产精品7m视频| 亚洲欧洲激情在线| 日韩有码片在线观看| 欧美影院在线播放| 在线观看亚洲视频| 欧美激情日韩图片| 中文字幕欧美日韩va免费视频| 欧美黄色片免费观看| 国产成人精品在线| 欧美一级大胆视频| 国产精品99蜜臀久久不卡二区| 亚洲欧美日韩国产成人| 欧美另类老女人| 欧美视频精品一区| 国产一区香蕉久久| 欧美高清在线播放| 亚洲激情国产精品| 亚洲在线免费看| 欧美激情欧美狂野欧美精品| 亚洲免费视频网站| 日韩久久免费电影| 国产色综合天天综合网| 中文字幕精品—区二区| 亚洲第一男人av| 日韩精品极品在线观看播放免费视频| 亚洲精品av在线| 日韩精品极品毛片系列视频| 日韩久久午夜影院| 欧美性xxxx极品高清hd直播| 久久久久久久久中文字幕| 欧美高清在线播放| 91a在线视频| 久久久欧美一区二区| 亚洲永久在线观看| 国产精品18久久久久久首页狼| 日韩免费观看网站| 91精品国产综合久久香蕉922| 91精品国产亚洲| 国产一区二区香蕉| 91社影院在线观看| 91久久久久久久一区二区| xvideos亚洲人网站| 午夜精品免费视频| 亚洲免费小视频| www.欧美视频| 亚洲精品视频中文字幕| 欧美激情一区二区三区久久久| 91亚洲人电影| 久久久久久久久久久久久久久久久久av| 日韩福利视频在线观看| 欧美亚洲激情视频| 午夜精品国产精品大乳美女|