C语言易错知识
該博文為原創文章,未經博主同意不得轉載,如同意轉載請注明博文出處
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105090266
C語言易錯知識
- !和 ~ 不一樣
- <<和>>的優先級低于+、-
- 移位要防止溢出
- 無符號數和有符號數混合運算都會被強制轉換為無符號數運算
- 局部變量要初始化
!和 ~ 不一樣
! 是邏輯非符號,~ 是位取反符號。
<<和>>的優先級低于+、-
比如要實現c=x*2+1,沒有加括號會出錯。
移位要防止溢出
其實用移位代替乘除法是個不錯的方法,筆者很喜歡拿到一段代碼后用移位代替乘除法來進行優化。不過有時候卻會出現問題,比如溢出問題。當很明顯可能溢出的話我們是會注意的。但是有時候這個問題是不明顯的,比如當移位出現在數組索引或函數參數時。我們可以用左移運算來代替乘法進行優化。
無符號數和有符號數混合運算都會被強制轉換為無符號數運算
當一個有符號數和一個無符號數進行算術運算時,系統會自動將有符號數強制轉換為無符號數再進行運算(即使你使用有符號數強制類型轉換)
局部變量要初始化
局部變量沒有初始化的話,因為單片機每次為他分配的是同一個內存區域,當你在函數中是這么使用局部變量時,就可能出問題:
總結
- 上一篇: 无法关机怎么办 解决电脑无法关机问题
- 下一篇: win启动更新失败怎么办 Win系统更新