国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網(wǎng)

標(biāo)題: C語言編程容易混淆的幾個問題總結(jié)(轉(zhuǎn)) [打印本頁]

作者: 菲利盟電子    時間: 2017-8-24 11:49
標(biāo)題: C語言編程容易混淆的幾個問題總結(jié)(轉(zhuǎn))
在進行單片機開發(fā)時,經(jīng)常都會出現(xiàn)一些很不起眼的問題,這些問題其實都是很基礎(chǔ)的c語言知識點,是一些小細節(jié)。但是正是因為很基礎(chǔ),又都是小細節(jié),所以我們往往容易忽視它們。結(jié)果有時候我們會花很長的時間糾結(jié)一個問題,遲遲找不到問題的所在。當(dāng)發(fā)現(xiàn)原因竟然是這么的簡單和不起眼時,我想大家都會感到痛不欲生。筆者今天又碰到了這樣的問題,實在忍不住了。因為這些問題都是小的知識點,考慮到之前也遇到好多這種問題,于是決定每次遇到問題就記錄下來,時刻提醒自己!!
1. !和~不一樣
! :邏輯非符號;
~:是位取反符號;
對IO口某個管腳賦值時不要錯用 !,如

1. <<和>>的優(yōu)先級低于+、-
比如要實現(xiàn)c=x*2+1,沒有加括號會出錯
        
3. 移位要防止溢出
其實用移位代替乘除法是個不錯的方法,筆者很喜歡拿到一段代碼后用移位代替乘除法來進行優(yōu)化。不過有時候卻會出現(xiàn)問題,比如溢出問題。當(dāng)很明顯可能溢出的話我們是會注意的,比如

但是有時候這個問題是不明顯的,比如當(dāng)移位出現(xiàn)在數(shù)組索引或函數(shù)參數(shù)時,有段用液晶顯示字符的代碼如下

我們可以用左移運算來代替乘法進行優(yōu)化,如

這本是一個好方法,但是事實上上面的代碼是錯的。當(dāng)執(zhí)行c<<4時,因為沒有明顯的賦值過程,我們可能認為沒問題,而事實上c的高位已經(jīng)丟失了,所以得到錯誤的結(jié)果。一個可行的做法是先進行強制轉(zhuǎn)換,如

4. 無符號和有符號運算
當(dāng)一個有符號數(shù)和一個無符號數(shù)進行算術(shù)運算時,系統(tǒng)會自動將有符號數(shù)強制轉(zhuǎn)換為無符號數(shù)再進行運算(即使你使用有符號數(shù)強制類型轉(zhuǎn)換),如下面兩種寫法的運輸結(jié)果是一樣的信盈達嵌入式企鵝要妖氣嗚嗚吧久零就要。


5. 局部變量要初始化
這一點是比較容易被忽略的。局部變量沒有初始化的話,因為單片機每次為他分配的是同一個內(nèi)存區(qū)域,當(dāng)你在函數(shù)中是這么使用局部變量時,就可能出問題:

如果第一次調(diào)用fun時,a傳遞的值為0,那么flag = 0x01;
執(zhí)行if(flag&0x01)后面的代碼。以后再調(diào)用fun時,即使a不為0,但flag依然使用之前的內(nèi)存區(qū)域,所以其值一直為0x01,一直執(zhí)行的是if后面的代碼,而不是else后面的


本文轉(zhuǎn)自網(wǎng)絡(luò)


深圳市菲利盟電子技術(shù)有限公司





歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 国产高清大尺度一区二区不卡 | 99久久精品无码一区二区毛片 | 国产视频高清在线 | 欧美三级蜜桃2在线观看 | 2021久久天天躁狠狠躁夜夜 | 成人综合在线观看 | 九九热只有精品 | 在线观看欧美亚洲日本专区 | 韩国一级毛片免费完整视频 | 五月天福利视频 | 欧洲精品一区二区三区在线观看 | 国产成人精品免费青青草原app | 西西大胆免费视频 | 麻豆影| 最近中文字幕无吗 | 中文字幕一区二区三区四区五区 | 欧美性久久 | 国产成人91高清精品免费 | 一级毛片免费毛片毛片 | 2020久久| 青青91| 国产精品久久久久久久久久免费 | 天天噜 | www.狠狠色| 日韩一区国产一级 | 五月婷婷伊人网 | 国产午夜视频 | 国产成人精品亚洲2020 | 色花堂你懂的国产第一页 | 欧美 日韩 亚洲另类专区 | 国产成人99久久亚洲综合精品 | 9久热 | 欧美性猛交xx免费看 | 成人免费网站在线观看 | 极品在线| 亚洲天堂久久久 | 国产综合精品日本亚洲777 | 丁香五月网久久综合 | 四虎影视国产精品一区二区 | 99热99re| 日本人内谢69xxxx |