重讀C Primer Plus,記錄遺漏的、未掌握的、不清楚的知識點。ide
一、連接器的做用是將這3個目標元素(目標代碼、系統的標準啓動代碼和庫代碼)結合在一塊兒,並將它們存放在單個文件,便可執行文件中。函數
一、對於標識符,一些舊的編譯器只識別8個字符,C99標準識別63個字符。在只識別8個字符的編譯器上,Shakespeare和Shakespencil不會報錯,但他們將被看做是一個名字。指針
一、%#0d,%#xd,%0Xd 能夠打印出 0、0x、0X前綴。內存
二、在常量數值後加 U、L或u、l 表示但願將這個常數以什麼形式存儲。ci
三、最小長度類型 int_least8_t、最快最小長度類型int_fast8_t。 (inttype.h)字符串
四、float:至少6位有效數字,8位用來表示指數及符號,24位用來表示非指數部分。
double:至少13位有效數字。
2.0e10 + 1.0 會出錯,由於float類型只有六、7位的有效數字。編譯器
一、sizeof(n) 等價於 sizeof n 當n是變量是,括號可加可不加,通常採起第一種。it
二、limits.h中定義了一些有關類型的常量。編譯
三、t,和整數轉換說明符一塊兒使用,表示一個ptrdiff_t值(與兩個指針之間的差相對應的類型);z,和整數轉換說明符一塊兒使用,表示一個size_t值(sizeof返回的類型)。示例:%td、%zd。ast
四、printf("%ld %ld %ld %ld", n1, n2, n3, n4),函數根據變量類型開闢相應大小的堆棧內存,可是根據格式說明符去讀取相應的字節數,從而打印。
五、printf("%*d\n", wideth, num),經過修飾符*動態控制字段寬度;scanf("%*d"),則是經過修飾符*跳過一個字段。
六、scanf("%10s"),讀取特定長度的字符串,有助於防止較短的緩衝區溢出。
一、使用%zd能夠直接打印size_t類型。
二、對於表達式,y = (4 + x++) + (6 + x++); 再明確一點,C能夠保證的是再這條語句結束後,x的值會比以前增長2,可是在當前語句中,哪個自增被優先計算取決於具體的實現,因此儘可能避免使用該類型的語句。
三、用 ‘{}’ 包圍的語句稱之爲一個複合語句,也就是一個代碼塊(block),C將其視爲一個語句。
四、表達式:是運算符和操做數的組合。最簡單的表達式只有一個常量或一個變量。
語句:是對計算機的命令,有簡單語句和複合語句。
簡單語句:聲明語句、賦值語句、函數調用語句、結構化語句、空語句。
五、關於類型轉換。在同一語句中包含不一樣類型的變量,通常會發生髮生。
類型級別從高到底的順序是:long double、double、float、unsigned long long 、long long、unsigned long、long、unsigned int、int。
當 long 和 int 具備相同的大小時,此時 unsigned int 的級別比 long 高。之因此沒有出現 char 和 short,是由於它們已經被提高爲 int 或 unsigned int。
一、‘,’ ,逗號運算符,它能夠用做一個順序點,全部逗號左邊的操做,都在逗號以後生效。
二、int i = 249, 500; 等價於 int i = 249; 500;。
int i = (249, 500); 等價於 249; int i = 500;。
三、沒了。