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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言中程序偏离,C语言程序员在编码时容易出错的几个点

發布時間:2024/10/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中程序偏离,C语言程序员在编码时容易出错的几个点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本期講講工作以來,自己碰到或者他人碰到的幾個C語言編碼易錯點。限于篇幅,這邊只舉了幾個例子作為拋磚引玉,歡迎大家留言說說自己遇到的其他易錯點。接下來提到的幾個易錯點的特點為看似非常基礎,但是犯錯的不在少數。

sizeof

sizeof是C/C++中的一個操作符,其作用為返回一個對象或者類型所占的內存字節數。敲黑板:記住了,sizeof的基本單位是字節。易錯點之一為:使用sizeof去計算非char類型的數組元素個數,這是不對的。如果要統計一個數組的元素個數,可以通過如下方式:

sizeof(ArrayName) / sizeof(ArrayName[0]) 或者

sizeof(ArrayName) / sizeof(ArrayType)

"=="與"="

在條件表達式中,我們經常用"=="進行變量與數值進行比較作為某段代碼執行的入口條件。但是如果編寫代碼時候不注意,漏寫了一個"=",程序運行就與原先設想千差萬別,而且編譯器不會有任何告警,如果工程比較大,排查起來會非常困難。還是上面的例子:

所以,很多編碼規范中,會明確設定一個規則:對于此類if表達式,規定數值寫在==左側,被比較的變量或者表達式放在==右側。這樣,即便一時手快漏寫了一個=,編譯的時候會產生error,迫使編碼者修正。

switch...case語句

關于switch...case語句有兩個易錯點。一個是在case塊結束后漏寫了break,導致程序運行偏離預期;另外一個是,在的確需要fall

through的時候,沒有進行必要的注釋,導致不明真相的吃瓜程序員以為是第一種情況,隨手補上了break。所以在每次進行switch語句編碼的時候,記得完成后再檢查一次代碼,防止漏寫break;另外在需要fall

through的時候,一定要有fall through關鍵字以及注明清楚這樣寫的緣由。

其他

字符型常量使用單引號括起來,字符串常量使用雙引號括起來。

使用錯誤的邏輯表達式,如企圖用if(a < b < c)表達if((a < b) && (b <

c))。

對于復合表達式,沒有使用()明確優先級,導致由于混淆了操作優先級而程序非預期運行,例如if(x = z == y) 理解為if((x = z) ==

y)。

總結

以上是生活随笔為你收集整理的c语言中程序偏离,C语言程序员在编码时容易出错的几个点的全部內容,希望文章能夠幫你解決所遇到的問題。

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