用keil編寫c51程式變數順序為什麼會影響實際執行

時間 2022-03-09 11:24:13

1樓:匿名使用者

因為i,y,k沒有賦初值,所以編譯的時候順序不同,那麼實際初值也不一樣。

當你使用y時,是直接y++的,所以如果此時y初值已經大於20了,那麼就要等到y累加到ffff,再溢位才能回到20,估計就要等很長時間了。

現在有兩個辦法,可以讓你不用糾結在順序上:

1、定義的時候

uint y=0,i=0,k=0;

2、....

y++;

if(y>=20)

.....

2樓:匿名使用者

變數定義了但是沒有初始化(賦值),這樣變數位址產生的是乙個隨機數,這個數不一定是0。目測是數碼管顯示的程式,不知道你子程式是怎樣寫的,如果子程式有對變數賦初值,變數宣告可以不用初始化,反之就下面這樣改吧。與順序無關。

uint i=0,y=0,k=0;

3樓:匿名使用者

告訴你乙個你不知道的公開密秘,全域性變數可以不賦初值,但區域性變數賦初值裡必須的,全域性可以不初化是因為keil預設有個啥51的檔案在復位時就將xdata全置0了,當然你也可以修改它,讓它不幫你初始化記憶體,比如如果你要區分斷電復位和看門狗復就須設為不淸0。

編寫html用哪種軟體好,編寫HTML用哪種軟體好?

只用過dw,不要用dw8就好,使用dw cs6都會有提示,還挺好用的,其他沒用過,不過sublime text 2編輯器也蠻好用的,就是編碼一直搞不懂安裝,所以目前都是採用utf 8編碼 編寫簡單的網頁html用什麼軟體好?editplus 很小,用起來也很簡單。用什麼軟體編寫html5比較好 編輯...

用js編寫求出100以內的質數,用JS編寫求出100以內的質數

質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。偽 根據函式的定義,使用兩次迴圈,從1 100去遍歷,當引數一對引數二能夠整除的時候就跳過,將剩下沒有因數的引數一新增到陣列中。var prime function len if i j i 1 return arr con...

用c語言編寫 檔案讀寫,用C語言編寫 檔案讀寫

第一種 include include include struct student 結構體s 50 void daoru struct student s,int n 檔案匯入函式 else fclose p void paixu struct student s,int n 排序函式 int i...

用vb語言編寫程式,用VB語言編寫程式

我用兩個文字框和乙個命令按鈕來實現 其中文字框 text1 用來存放 輸入資料 text2用來存放處理後的結果 用command1實現以上功能 private sub command1 click text2.text val text1.text 10end sub 你把要求說的不太詳細,我只是按...

用keil如何把c語言程式生成hex檔案,求步驟

以個例子給你參考,有兩個檔案,一是s.a51,另乙個是 m.c都加到keill的工程中編譯。彙編中有兩個函式,注意c的引數是如何傳遞給彙編的。s.a51 nomod51 name sentbyteup pr?sentbyteup?sentbyteup segment code dt?sentbyte...