久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

C語言為何更改了一個變量名 程序運行就不對了

查看數: 4997 | 評論數: 24 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-6-4 13:37

正文摘要:

很奇怪 , 只是把變量名”h“改成了"l",程序運行就正常了, 到底問題在哪呢  編程器換了 CPU 也換過了還是同樣的現象 變量為名為"l"正常運行時最左面兩個數碼管到23后清零 變量名改成“h”十位始終 ...

回復

ID:808634 發表于 2021-6-7 12:27
數組定義問題
ID:160500 發表于 2021-6-7 10:59
老董 發表于 2021-6-6 20:47
多謝各位大師指教 真的是數組越界了  本來寫程序的時候只想到了用時 ,分,秒,每個兩位數共六位數  把那兩 ...

數組越界,如果那個地址沒有被用到,則不會對程序造成影響,如果是另外一個變量的地址,則會把該變量的的內容給修改,造成數據錯誤甚至程序崩潰。
ID:849913 發表于 2021-6-6 20:47
多謝各位大師指教 真的是數組越界了  本來寫程序的時候只想到了用時 ,分,秒,每個兩位數共六位數  把那兩個杠杠給忘了  越界了又不報錯  看來真是一點也不能馬虎  但是也沒搞懂 為何越界了會出現這樣的現象  
ID:933551 發表于 2021-6-5 21:56
u8 time[6];數組訪問越界了,適逢地址的變量會被意外改寫。

評分

參與人數 1黑幣 +6 收起 理由
老董 + 6 很給力!

查看全部評分

ID:160500 發表于 2021-6-5 19:02
npn 發表于 2021-6-5 16:05
定義的變量:

Keil為變量分配的內存地址:

keil的內存分配并不是簡單的按字符的順序來的,對于這種簡單的程序這樣排列不難理解,對于大的程序,變量名不是單一字符的內存分配并不是這樣。你可以去實驗。
這是一個編譯的內存分配,你看看。
  D:000AH         PUBLIC        Sec_Count
  D:000CH         PUBLIC        jaA
  D:000DH         PUBLIC        RealTimeFlow
  D:000EH         PUBLIC        aas
  D:000FH         PUBLIC        accFlow
  D:0011H         PUBLIC        Flowrate
  D:0012H         PUBLIC        c
  D:0013H         PUBLIC        d
  D:0014H         PUBLIC        e
  D:0015H         PUBLIC        f
  D:0016H         PUBLIC        g
  D:0017H         PUBLIC        h
  D:0018H         PUBLIC        i
  D:0019H         PUBLIC        b321
ID:57657 發表于 2021-6-5 16:05
liuzx66 發表于 2021-6-5 11:41
請舉例說明,不要誤導

定義的變量:

Keil為變量分配的內存地址:






ID:160500 發表于 2021-6-5 11:41
npn 發表于 2021-6-4 22:27
Keil編譯時會將變量名進行字符串排序,小的會被分配到低地址,而不是行靠前的變量分配到低地址,把變量l改 ...

請舉例說明,不要誤導
ID:213173 發表于 2021-6-5 10:47

評分

參與人數 1黑幣 +6 收起 理由
老董 + 6 很給力!

查看全部評分

ID:57657 發表于 2021-6-4 22:27
Keil編譯時會將變量名進行字符串排序,小的會被分配到低地址,而不是行靠前的變量分配到低地址,把變量l改成h,就分配到其他地址去了。
再加上數組越界就會破壞其他變量,導致程序不能正常運行。
編譯后會生成一個M51格式的文件,什么數組、變量分配到什么地址,可以用記事本打開查看。
ID:275826 發表于 2021-6-4 20:24
因為time[6]定義太小

評分

參與人數 1黑幣 +6 收起 理由
老董 + 6 很給力!

查看全部評分

ID:867005 發表于 2021-6-4 17:12
可以看一下,是不是定義出現問題
ID:298123 發表于 2021-6-4 16:21
time[6]定義太小,數組訪問越界了,誤修改變量值了

評分

參與人數 1黑幣 +6 收起 理由
老董 + 6 很給力!

查看全部評分

ID:928028 發表于 2021-6-4 16:19
可能h這個變量重復定義了,或者后面碼代碼的時候沒有按照定義的變量來不小心打錯了,可以仔細再檢查一下,最后我建議樓主以后定義變量的時候盡量用多個字母定義,不行就用全拼嘛,這樣不容易搞混。
ID:858964 發表于 2021-6-4 15:52
crrr 發表于 2021-6-4 15:42
樓主會不會是重復定義了

亦有此疑問。
ID:883031 發表于 2021-6-4 15:51
你的程序變量定義時,有個全局變量i,在函數中有定義了一個局部變量i,還有形參也用有i,太亂了,會出問題的。
ID:160500 發表于 2021-6-4 15:49
變量名簡單或者復雜,對于編譯器來說,都是一樣的。編譯器不會對此有歧視
ID:160500 發表于 2021-6-4 15:44
明顯的time數組定義的小了

評分

參與人數 1黑幣 +6 收起 理由
老董 + 6 很給力!

查看全部評分

ID:918728 發表于 2021-6-4 15:42
樓主會不會是重復定義了
ID:858964 發表于 2021-6-4 15:37
老董 發表于 2021-6-4 14:16
我還是個菜鳥 是不是變量名取得太簡單了 把KEIL 弄蒙了

樓主修改變量名時,是否將數字 1小 誤作小寫字母 i?

建議試試將變 量名改為大寫字母 L
ID:769980 發表于 2021-6-4 15:35
你試一下,每個變量定義時順便數值 =0;看會不會正常
ID:160500 發表于 2021-6-4 15:34
改變變量名不會這樣,一定有其它的問題你沒找到。
ID:849913 發表于 2021-6-4 14:16
我還是個菜鳥 是不是變量名取得太簡單了 把KEIL 弄蒙了
ID:236035 發表于 2021-6-4 14:04
僅從貼出來的程序部分,看不出問題。
但值得吐槽的是你這變量名取得很不好。
ID:849913 發表于 2021-6-4 13:41
最后兩位顯示其實不是99  是我想快速看到運行結果把時間調快了1000倍產生的快門暫留

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品高潮呻吟久久 | 国产欧美日韩精品在线观看 | 一级毛片在线播放 | 久久国产一区二区三区 | 亚洲精品电影网在线观看 | 日韩在线视频一区 | 日日操操| 成人一区二区三区 | 亚洲最大福利网 | 亚洲视频一区在线 | 国产精品美女久久久 | 日本不卡一区二区三区在线观看 | 可以免费观看的av | 狠狠综合久久av一区二区老牛 | 九九久久国产精品 | 日韩欧美精品在线播放 | 黄色网址在线播放 | 91麻豆精品一区二区三区 | 久久久久久综合 | 亚洲 欧美 精品 | 日韩成人免费 | 农村妇女毛片精品久久久 | 欧美一级视频在线观看 | 91欧美精品成人综合在线观看 | 亚洲视频www| 亚洲三区在线观看 | 色呦呦在线 | 免费亚洲一区二区 | 欧美a v在线 | 久久色视频 | aaaaaaa片毛片免费观看 | 亚洲精品高清视频在线观看 | 国产午夜在线观看 | 日韩在线视频一区二区三区 | 亚洲网站在线观看 | 成人欧美日韩一区二区三区 | 全免费a级毛片免费看视频免费下 | 久久久做| 精品国产不卡一区二区三区 | 精品一区二区电影 | 97国产在线观看 |