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