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

奇怪的C語言特性

 更新時間:2013年04月11日 14:35:51   作者:  
下面列出的特性未必奇怪,有的算是有趣

下面列出的特性未必奇怪,有的算是有趣。

1)a[2] 等價于 2[a]

"aabbccdd"[5] 等價于 5["aabbccdd"]

這條特性可以用于使用數(shù)組、指針、字符串,但不能用在變量定義時。K&R C Programming language 217頁對此有介紹。

2)二元、三元復(fù)合字符

http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

字符串字面值??!將被認為是|,所以兩個問號同時出現(xiàn)在字符串的時候一定要小心。二元復(fù)合字符在C99被引入,如<:等價于[

3)Duff's Device

http://en.wikipedia.org/wiki/Duff%27s_device

特點是switch與while交錯出現(xiàn)。代碼類似

image

4)同名同姓現(xiàn)象

image

在《C陷阱與缺陷》中有詳細解釋。

5)a[i++]= i;

這個好像是依賴特定編譯器實現(xiàn),我在Xcode實驗結(jié)果為先對a[i]賦值i,然后操作i++。此類代碼一定要小心。如果你在做code review發(fā)現(xiàn)++ –出現(xiàn)在其它表達式中或者作為參數(shù)出現(xiàn),一定要立刻馬上把它移出來作為單獨語句,小心駛得萬年船。

6)sizeof

sizeof(x), x可以是一個表達式或者類型名,如果是表達式,不做運算,int x = 1; size_t sz = sizeof(x++); X不會增加。T *p = NULL; p = malloc(sizeof *p); p并沒有提領(lǐng),K&R圣書也有講。

sizeof unary-expr; sizeof(typename);一元表達式可以沒有括號,圣書里面語法部分提到。如size_t f = sizeof 99;

7)宏定義要小心

例如:#define FOO(a,b) (a+b)/(1-a)如果這樣調(diào)用FOO(bar++,4),自增兩次,當然,把宏展開就非常清楚了。

參考資料:

http://www.steike.com/code/useless/evil-c/

《C陷阱與缺陷》

相關(guān)文章

  • C語言解決百錢買百雞問題

    C語言解決百錢買百雞問題

    本文給大家分享的是一個經(jīng)典的算法(百元百雞)的C語言版的解決方法,使用的是比較偷懶的窮舉法,有需要的小伙伴可以參考下。
    2016-02-02
  • c語言中的文件加密與解密

    c語言中的文件加密與解密

    這篇文章主要介紹了c語言中的文件加密與解密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C++小游戲教程之猜數(shù)游戲的實現(xiàn)

    C++小游戲教程之猜數(shù)游戲的實現(xiàn)

    這篇文章主要和大家詳細介紹如何利用C++做一個簡易的猜數(shù)游戲,分為用戶猜數(shù)和系統(tǒng)猜數(shù)。文中的示例代碼講解詳細 ,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • 淺談c++中的while(cin)問題

    淺談c++中的while(cin)問題

    下面小編就為大家?guī)硪黄獪\談c++中的while(cin)問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++讀寫.mat文件的方法

    C++讀寫.mat文件的方法

    本文介紹了“C++讀寫.mat文件的方法”,需要的朋友可以參考一下
    2013-03-03
  • C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼

    C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼

    這篇文章主要介紹了C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • ReSharper 的安裝使用詳細教程

    ReSharper 的安裝使用詳細教程

    resharper安裝教程是關(guān)于vs2012一個非常好用的插件的安裝教程,建議大家嘗試安裝,今天通過本教程幫助大家學(xué)習ReSharper 的安裝使用詳細教程,感興趣的朋友一起看看吧
    2021-06-06
  • C++在vscode中的多文件編程問題解讀

    C++在vscode中的多文件編程問題解讀

    這篇文章主要介紹了C++在vscode中的多文件編程問題解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C語言rand和srand函數(shù)使用方法介紹

    C語言rand和srand函數(shù)使用方法介紹

    rand()函數(shù)用來產(chǎn)生隨機數(shù),但是,rand()的內(nèi)部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機的。srand()用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。參數(shù)seed是整數(shù),通??梢岳胻ime(0)或geypid(0)的返回值作為seed
    2023-02-02
  • 淺析C語言中的sizeof

    淺析C語言中的sizeof

    sizeof是C/C++中的一個操作符(operator),作用就是返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)。返回值類型為size_t,在頭文件stddef.h中定義
    2013-07-07

最新評論

如皋市| 长海县| SHOW| 宝应县| 沐川县| 梁山县| 乌兰察布市| 建阳市| 开鲁县| 兴隆县| 观塘区| 南丹县| 龙泉市| 外汇| 呼图壁县| 凤庆县| 汕头市| 磴口县| 长武县| 南昌县| 延庆县| 炎陵县| 上栗县| 泾源县| 尉氏县| 林口县| 平塘县| 宁安市| 浦北县| 鲁山县| 长春市| 襄城县| 茂名市| 台中县| 鄂州市| 紫金县| 滦平县| 凌海市| 全南县| 阳西县| 定安县|