欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3662|回復: 5
收起左側

想請問一下C語言循環累加超過變量限制后,系統會出錯嗎?

[復制鏈接]
ID:349690 發表于 2020-9-2 17:48 | 顯示全部樓層 |閱讀模式
我在一個STC15W系列的單片機程序開發里面,不小心出了個錯誤。
unsigned int n;
while(1) { n++;…… }
大概就是以上邏輯。
n在實際運行中,很快就超過了65535的限制。我想問這個情況下,繼續累加下去,n的值是一直保持65535呢?還是從0開始自動循環呢?系統會不會崩潰?
根據實際情況,系統確實沒有崩潰,我也是在后期檢查時候才發現這個問題的,因為是分支程序,而且有中斷跳出,目前各種測試這個bug并沒有出現致命問題。但是可怕的是,1K的固件已經燒進去了,心中忐忑。所以想問問大師們,這樣的超限錯誤,芯片內變量的實際情況是怎樣的呢?我需不需要解決bug重新燒錄,還是這批就這樣放過呢?
先謝謝各位啦
回復

使用道具 舉報

ID:471066 發表于 2020-9-2 18:52 | 顯示全部樓層
為什么是65535,而不是65536,你也知道到655336就表示為0了,很簡單的例子是鐘表,到23點59分再走1分鐘就是24(0)點,這就叫溢出,他不會理會你到8點要上班,到12點要下班!
回復

使用道具 舉報

ID:378182 發表于 2020-9-2 20:00 | 顯示全部樓層
這個變量 n 在程序其他語句中是否有引用?如果有引用并參與運算,則會引起不可預見的錯誤。
如無引用,由其在0-65535間循環,不必理會。
回復

使用道具 舉報

ID:816373 發表于 2020-9-2 23:04 | 顯示全部樓層
會從0開始繼續循環,具體會不會崩潰要看你是用來干什么的
回復

使用道具 舉報

ID:130230 發表于 2020-9-2 23:46 | 顯示全部樓層
不會出錯,加到65535后再加1就從0開始重新加。如果你懂一點匯編就明白了。這是是匯編里面常用的小技巧。
回復

使用道具 舉報

ID:213173 發表于 2020-9-3 07:22 | 顯示全部樓層
變量不受約束和溢出肯定會出錯,會不會導致災難性后果就要看這個變量在系統中的具體作用。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表