C語言需要注意的地方

2021-07-09 16:54:34 字數 1740 閱讀 5191

今天看了一本c陷阱與指標的書,從中挑選了一些我自己平常不太注意的地方,或者有些是記不太清的東西,稍微整理了下有以下這些地方:

1:=與==是不同的,乙個是賦值,乙個是比較

2:&與&&是不同的,前者是按位與,後者是邏輯與,理解2&1和2&&1的結果

3:整形常量第乙個字元是0,則代表8進製,0195這個理解成141(十進位制),0215(八進位制)。

4:『』中的字元代表乙個整數,「」代表指向無名陣列起始字元的指標,該陣列被雙引號之間的字元以及乙個額外的二進位制為0的字元『\0』初始化。

5:a+++++b的含義(a++)+(++b)若根據貪心法,((a++)++)+b,但語法上a++不能做左值。

6:float g():()優先順序大於,則g()函式返回乙個浮點型指標;

7:(*fp)():*fp是該指標指向的函式,(*fp)()是呼叫該函式的方法;void(*fp)():代表fp是乙個返回值為void型別的函式的指標;

8:((void()())0)():裡面(void(*)())0將常數0轉換成指向返回值為void的函式的指標型別,整式就是呼叫首位址為0位置的子函式。

9:算術運算子》移位運算子》關係運算子》邏輯運算子。賦值運算子《條件運算子。

10:宣告的後面要有分號,包括結構體,類定義;

11:當陣列作為引數時,實際上是陣列的第乙個元素作為了引數。

12:編譯器保證由0轉換而來的指標不等於任何有效的指標,決不能使用該指標所指向的記憶體中儲存的內容。

13:有符號整型相加可能會溢位,穩妥的是轉換成無符號數。

14:static修飾符把變數的作用域限制在乙個原始檔中,對其他原始檔不可見。

15:fread()和fwrite()之間要有fseek才可以進行交叉讀寫。

16:file和line是內置於c語言處理器中的巨集,它們會被擴充套件為所在檔案的檔名和所在**行的行號。

17:assert的引數是乙個表示式,若表示式為0,就使程式終止執行,並給出一條適當的出錯資訊。

18:#define footype struct foo和typedef struct foo footype是一樣的,但後者更通用。

19:char型轉換成unsigned int時要先轉化成int型,這可能不對;unsigned char 轉換成uint是可以直接轉化的。

20:移位運算比除法運算快很多。

21:null指標並不指向任何物件,除非用於賦值或比較運算,其餘都是非法的。在記憶體位置0處加了硬體級的讀保護,對記憶體位置0只允許讀,不允許寫。

22:rand_max等於隨機數的最大取值。

23:malloc(n)將返回乙個指標,指向一塊新分配的可以容納n個字元的記憶體,程式設計者可以使用這塊記憶體;

把malloc函式返回的指標作為引數傳入free函式這樣就可以重新利用;

呼叫realloc函式時,需要把指向一塊已分配記憶體的區域指標以及這塊記憶體新的大小作為引數傳入,就可以調整這塊記憶體區域新的大小,會涉及記憶體的拷貝。

24: printf函式把格式說明字串中的字元逐一複製到標準輸出,直到格式字串結束或者遇到乙個%字元;

fprintf函式則可以把資料寫到任何檔案中;

sprintf函式是把輸出資料寫到第乙個引數指向的字元陣列中。

%u和%d一樣,u是無符號數;

%o,x,x列印8進製,16進製制小寫,16進製制大寫;

%s列印字串,%c列印單個字串;

%g,%f,%e列印浮點數值。g列印不需要按列對齊的浮點數,e是指數形式,f不用指數形式;

C語言中移位符需要注意的地方

1 無符號值的所有移位操作都是邏輯移位,即是在空位補0,但是對於有符號數,到底是採用邏輯移位還是算術移位是靠編譯器決定的。左移對於算術移位和邏輯移位都是一樣的。因此當你的專案中有移植性的要求時,請注意不要使用有符號數的右移操作,如果沒有移植性的要求時,應在使用有符號數的右移操作的地方,進行注釋說明。...

幾個C 需要注意的小地方

1 引用在宣告時必須要定義 2 auto不能自動推導引用,需要顯式宣告 3 可以顯示定義預設的建構函式和析構函式,需要在後面加 default關鍵字 4 static 關鍵字標示的成員變數必須在類外定義 5 const關鍵字標示的成員變數可以在初始化列表或者類外定義 但不能宣告定義 6 計算機會自動...

java需要注意的地方2

1.abstract class name 大俠們,這有何錯誤?答案 錯。abstract method必須以分號結尾,且不帶花括號。2.public class something 有錯嗎?答案 錯。區域性變數前不能放置任何訪問修飾符 private,public,和protected final...