C 常見陷阱

2021-09-28 23:03:07 字數 422 閱讀 2516

注:char型別在標準中是個特別的存在,它沒有被規定為有符號或無符號。比如int指的是有符號,而char不一樣。

在程式設計時最好給char寫上符號,否則同樣的表示式可能在不同的編譯器/平台會有不同的結果。

請觀察乙個程式輸出:

int

main()

輸出:

fffffff1, fffffff2, f0f2

fffffff1, fffffff2, f1f2

切記切記,盡可能不要預設引用捕獲,也就是[&]。否則一旦出現問題,很讓人找不到頭緒。這可不像空指標這麼明顯,本來也沒有多大事,可誰讓c++的除錯環境這麼難用呢。

如果邏輯需要使用引用,對於自定義型別可以盡量轉化成智慧型指標,進而轉換成值傳遞。對於基本型別就自己掂量吧~

C 常見陷阱之 語法

至少在2018的今天,c 的函式引數求值順序仍然是未定的 交給編譯器處理 所以函式引數求值的順序可能在某些情況下回導致一些問題。看下面這個例子 int test 5 printf d,d,d n test,test,test test 5 printf d,d,d n test test,test ...

C語言常見陷阱總結

1.1 char array1 100 2 char array2 二者都可以當指標用,使用時有何區別?1中字元陣列,儲存於棧區,sizeof array1 為100,aray1代表首元素首位址,不可以被賦值,array1 0 這樣可以被賦值,陣列大小確定,難以擴容 2中儲存於字元常量區,sizeo...

C陷阱篇之常見手誤

c的某些語法容易讓人不小心觸雷,比如 從0開始的下標 很多高階語言中,定義n個元素的陣列,下標範圍是從1到n,但c特殊,n元素的c陣列中沒有下標為n的元素,只有從0到n 1的下標。所以使用c陣列時不要犯這種錯誤 int i,a 10 for i 1 i 10 i i 10時超出陣列邊界 八進位制or...