日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> 單片機(jī)C語言易錯知識點

單片機(jī)C語言易錯知識點

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:5

在進(jìn)行單片機(jī)開發(fā)時,經(jīng)常都會出現(xiàn)一些很不起眼的問題,這些問題其實都是很基礎(chǔ)的c語言知識點,是一些小細(xì)節(jié)。但是正是因為很基礎(chǔ),又都是小細(xì)節(jié),所以我們往往容易忽視它們。結(jié)果有時候我們會花很長的時間糾結(jié)一個問題,遲遲找不到問題的所在。當(dāng)發(fā)現(xiàn)原因竟然是這么的簡單和不起眼時,我想不單是我,大家都會感到痛不欲生。筆者今天又碰到了這樣的問題,實在忍不住了。因為這些問題都是小的知識點,考慮到之前也遇到好多這種問題,于是決定每次遇到問題就記錄下來,時刻提醒自己。

1. !和 ~ 不一樣

! 是邏輯非符號,~ 是位取反符號。

對IO口某個管腳賦值時不要錯用 !,如

2.<<和>>的優(yōu)先級低于+、-

比如要實現(xiàn)c=x*2+1,沒有加括號會出錯

3.移位要防止溢出

其實用移位代替乘除法是個不錯的方法,筆者很喜歡拿到一段代碼后用移位代替乘除法來進(jìn)行優(yōu)化。不過有時候卻會出現(xiàn)問題,比如溢出問題。當(dāng)很明顯可能溢出的話我們是會注意的,比如

4.無符號數(shù)和有符號數(shù)混合運算都會被強(qiáng)制轉(zhuǎn)換為無符號數(shù)運算
當(dāng)一個有符號數(shù)和一個無符號數(shù)進(jìn)行算術(shù)運算時,系統(tǒng)會自動將有符號數(shù)強(qiáng)制轉(zhuǎn)換為無符號數(shù)再進(jìn)行運算(即使你使用有符號數(shù)強(qiáng)制類型轉(zhuǎn)換),如下面兩種寫法的運輸結(jié)果是一樣的


5.局部變量要初始化
局部變量沒有初始化的話,因為單片機(jī)每次為他分配的是同一個內(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后面的。

如果要避免這個錯誤,平時要養(yǎng)成對局部變量初始化的習(xí)慣。

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

和平区| 清苑县| 青神县| 米泉市| 林州市| 临武县| 松溪县| 襄垣县| 沾益县| 东台市| 巴青县| 东阳市| 天等县| 南投市| 资源县| 巴楚县| 安新县| 玉环县| 西昌市| 孟连| 紫金县| 阳城县| 石首市| 石门县| 石屏县| 县级市| 三穗县| 陕西省| 双桥区| 淮滨县| 新巴尔虎左旗| 高密市| 磐石市| 顺平县| 天全县| 儋州市| 太原市| 绥德县| 金湖县| 华池县| 宁德市|