|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
問一個不好意識問的問題... |
| 作者:beiwei23du 欄目:單片機(jī) |
我在書上看到這么一段C的延時程序 void delays(void) { uchar i; for(i=300;i>0;i--); } 我有點(diǎn)不明白,既然i是uchar類型的變量,那他的值域應(yīng)該在0-255之間啊 為什么給i賦值300呢?這不是超過它的范圍了嗎? 可我在編譯時也沒發(fā)現(xiàn)錯誤,調(diào)試時300照樣賦給I 這是怎么回事。 |
| 2樓: | >>參與討論 |
| 作者: computer00 于 2006/9/24 1:33:00 發(fā)布:
我見過凌陽的MCU開發(fā)環(huán)境下的uchar就是16bit的 所以這個還得看編譯環(huán)境。 如果是在keil下,給i敷值300,就會被截?cái),相?dāng)于i=300-256=44。 |
|
| 3樓: | >>參與討論 |
| 作者: Athlon64fx 于 2006/9/24 3:16:00 發(fā)布:
int 長度和CPU有關(guān), 但是CHAR是固定的吧.. 一個CHAR就是8位啊.. 這種寫法可能有兩個原因: 1. 故意寫錯..降低可讀性.. 2. 失誤.. 好的編譯器會給出警告.. |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2006/9/24 8:43:00 發(fā)布:
不信你可以去找凌陽的編譯器來看看,CHAR是否是16位的 我開始也誤認(rèn)為它是8位的,卻吃了一回暗虧,哎……………… 但絕大部分還是8位的,非8位的,我也就見過僅此一次而已。 |
|
| 5樓: | >>參與討論 |
| 作者: beiwei23du 于 2006/9/24 9:07:00 發(fā)布:
我用的就是keil啊, 編譯時既沒見錯誤也沒見警告 |
|
| 6樓: | >>參與討論 |
| 作者: 平常人 于 2006/9/24 9:13:00 發(fā)布:
各位注意,上面用的是uCHAR而不是CHAR uCHAR不是ANSI C的標(biāo)準(zhǔn)類型,是個用戶定義的類型;CHAR才是ANSI C的標(biāo)準(zhǔn)類型,但不敢肯定ANSI C里是否給出了它的長度。 關(guān)于uCHAR,假如有如下定義,那上面的程序就一點(diǎn)沒問題: typedef uCHAR unsighed SHORT; typedef uCHAR SHORT; ........ |
|
| 7樓: | >>參與討論 |
| 作者: 伍笛 于 2006/9/24 10:36:00 發(fā)布:
往 有的編譯器會出錯,但是大多數(shù)的編譯器不會出錯。如以下程序 unsigned CHAR i; for(i = 0; i < 300; i++) { } 一般的編譯器是不會出錯的,但是這就是一個死循環(huán)。 |
|
| 8樓: | >>參與討論 |
| 作者: hxiaon 于 2006/9/24 14:38:00 發(fā)布:
有意思的問題 |
|
| 9樓: | >>參與討論 |
| 作者: sxl_72 于 2006/9/26 8:54:00 發(fā)布:
凌陽16位機(jī)可能是 |
|
| 10樓: | >>參與討論 |
| 作者: ljxh401 于 2006/9/26 10:27:00 發(fā)布:
支持平常人的看法 |
|
| 11樓: | >>參與討論 |
| 作者: joy晴天 于 2006/9/26 15:57:00 發(fā)布:
我也想到平常人 的想法 |
|
| 12樓: | >>參與討論 |
| 作者: 原野之狼 于 2006/9/26 17:51:00 發(fā)布:
re: 看看實(shí)際調(diào)試的過程中循環(huán)了多少次? 應(yīng)該是會截?cái)嗟,?4次。 |
|
| 13樓: | >>參與討論 |
| 作者: xiaoguang 于 2006/9/26 20:24:00 發(fā)布:
凌陽的確實(shí)是16位 |
|
| 14樓: | >>參與討論 |
| 作者: qjy_dali 于 2006/9/26 20:38:00 發(fā)布:
嚴(yán)格地說,程序沒有錯,但數(shù)值是不對 如果好的編譯器,可以給個警告。數(shù)值只不過是回卷了而已 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |