C陷阱與缺陷

2021-08-26 10:03:26 字數 549 閱讀 1235

1. int num[10]= ;

測試一下 num[0] 是否 等於 0[num] 。。。。。。

因為num是首位址 num+0 ==0+num

2.其實c中只有一維陣列 我們所說的 int a[3][4] 只是乙個包含了三個元素 每個元素都是包含了四個整形值的一維陣列

3.int num[10][10] ;

int *p=num[0] ;

名為num的陣列中 num[0]-num[9]表示的是 每個長度為10的一維陣列 元素的首位址

4.(* (void (*)())0)() ; //眨眼一看很難看懂 其實這就是乙個函式指標的問題 呼叫 0位址的函式 考試的時候我以為是 數值的強制轉換 鬱悶了。。。。

5. a++++b 會報錯 a++ + ++b 不會錯 因為 詞法分析器 會自左向右 結合字元來組成 運算子 a++后位乙個數值 如果a++++那麼 乙個數值的自加是不是沒意義呢

6. a<<3+ 5 (a<<3)+5 意思完全不同 運算子優先順序問題

7.if

) //這樣編譯器也能通過

8.

c陷阱與缺陷 陷阱

例1 if x y break 這就話的意思就是把y賦值x,判斷x是否為0,實則是在判斷y是否為0 例2 while c c t c n 這句話的意思就是 c t c n 賦值給c,而有 符本身就是不為0的數,所以這就是while 1 的意思。例3 int x 4,p new int p 2 cou...

C陷阱與缺陷

c語言對於符號 包含乙個或多個字元 的識別規則 每乙個符號應該包含盡可能多的字元。也就是說,編譯器將程式分解成符號的方法是,從左到右乙個字元乙個字元地讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成部分 如果可能,繼續讀入下乙個字元,重...

C陷阱與缺陷

錯誤分為兩種,具有實質區別。第一種可以被編譯器識別出來,不符合詞法 語法 從技術上說時錯誤的。第二種從技術上說時正確的,計算機的視角看它不具有錯誤。因此,c程式順利通過了編譯,沒有報告任何警告和錯誤資訊,計算機嚴格按照程式 執行,但結果與預期不符。程式設計錯誤實際上反應的是程式與程式設計師對該程式的...