日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++冷门知识点你知道多少呢?

發布時間:2023/12/2 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++冷门知识点你知道多少呢? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在學習C語言的過程中,我們都自己總結了一些重要的知識點,但是有些不常用的冷門知識點可能就被我們選擇性忘記了,你要不要來回一下呢?

1:int跟signed int是一回事,short、long亦然,但char不是。

char、signed char、unsigned char在邏輯上是三種類型,比較直觀的體現就是在C++的重載中,你可以定義參數類型分別為它們的三個同名函數。但實現上的類型只有兩種,char可能是signed也可能是unsigned的,看編譯器實現,現在很多編譯器默認是signed,但可以通過選項配置或參數指定為unsigned。

2:你是否已經習慣了“\xHH”這種兩個H的寫法的16進制換碼序列?

但實際上C規定H可以任意多的。

例如:

cout << strlen("\x0012") << endl;

不過如果后面數字太大,是有可能出現溢出的情況,不同編譯器處理方式不同,gcc會報錯,vc是截取末尾4字節。

可以試試:

cout << "\x1234567890000000000000000000041" << endl;

那如果我想要\x00、1、2這仨字符組成的字符串字面量呢?可以這樣寫:"\x00""12",多個字面量連著寫,會幫你連起來。

3:字符串!

很多語言都支持用反斜杠放在行尾來折行,C++也可以,不過這種代碼:

cout << "hello \\ tony" << endl;

有人可能會認為編譯失敗,因為行尾的反斜杠被前面一個轉義了,但實際上一些編譯器(比如gcc)并不會到詞法分析階段來搞這個事情,采用了非常粗暴的方式:直接讀入源文件然后將里面的"\\\n"替換為空串,然后再開始編譯,所以上面的代碼其實等于:

cout << "hello \tony" << endl;

第一個反斜杠跟第二行的t連起來,就是tab符了。

4:還是字符串!

C語言以前有三字符換碼序列,比如??=表示#等,不過現在很多編譯器已經不想支持這種東東了,比如新的gcc會給出個warning,新標準好像也不打算支持了,據說是因為IBM的字符集和老的一些鍵盤沒有#之類的字符,很多老代碼是這種形式寫的,這個特性的去留問題后面還引起爭論,有大佬直接說你們換個新鍵盤就好啦。

5:C語言的sizeof是一個關鍵字!!!

sizeof是前綴單目運算符,而不是函數。

這意味著你可以直接寫:

cout << sizeof 1 << endl;

然后,強制類型轉換運算、指針解引用運算也是前綴單目運算符,而我們知道前綴單目運算符是右結合的,那么這個式子:

sizeof(int)*p 應該解釋為:對指針p解引用,然后強制轉換為int類型,然后取sizeof咯?哈哈哈

雖然邏輯嚴謹,但其實不是的,因為還有特殊規定:sizeof后面如果是一個強制類型轉換的表達式,則必須加括號,所以不用擔心,上面的代碼是int的大小乘以p

最好還是給所有sizeof加上括號吧。。。

6:大家是不是都習慣用stdint.h中的int32_t這些類型了,很多資料也推薦用,但這些類型其實是optional的,就是說可能是不提供或缺失,例如ILP64模型下,就沒有32位的整型,不過大部分平臺還是有的!!!

關注它,

你就可以得到

很多你想要的C/C++

開發工具及學習視頻資料

總結

以上是生活随笔為你收集整理的C/C++冷门知识点你知道多少呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。