[請問] 老師教了一個C語言delay的寫法 看不懂已回收

看板ask作者 (kenlee)時間9年前 (2014/10/07 22:07), 編輯推噓2(2018)
留言20則, 7人參與, 最新討論串1/1
老師今天教了一個 C語言 delay的寫法 可是不太懂其中含意 程式如下 void delay_ms(unsigned int d) { unsigned int s ; while (d--) { s=960; while (s--) ; } } 不清楚這兩個while一起使用的意思 還有為什麼使用(d--,s--) 還有不太清楚分號(;)什麼時候該加 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.122.222 ※ 文章網址: http://www.ptt.cc/bbs/ask/M.1412690879.A.4F2.html

10/07 22:09, , 1F
分號等於說每句的結束 所以巨尾一定都要加
10/07 22:09, 1F

10/07 22:10, , 2F
句尾
10/07 22:10, 2F

10/07 22:11, , 3F
d--意思就是 d=d-1;
10/07 22:11, 3F

10/07 22:11, , 4F
while()裡面小於0就會false 就是直接用d當作迴圈數目
10/07 22:11, 4F

10/07 22:11, , 5F
--就是一次-1的意思
10/07 22:11, 5F

10/07 22:12, , 6F
不過我也看不懂while (d--) 這種用法就是了...感覺沒看
10/07 22:12, 6F

10/07 22:12, , 7F
喔 對喔 等於0就已經false
10/07 22:12, 7F

10/07 22:14, , 8F
所以第一行的while=0時就會跳到s=960這行 那接下來的用意
10/07 22:14, 8F

10/07 22:14, , 9F
是什麼
10/07 22:14, 9F

10/07 22:15, , 10F
這樣的話應該d也還要設一個初值吧 等於跑兩次迴圈?
10/07 22:15, 10F

10/07 22:16, , 11F
應該前面主程式會有call delay_ms(100) 類似這種
10/07 22:16, 11F

10/07 22:16, , 12F
SORRY d有出使值老師設2000
10/07 22:16, 12F

10/07 22:16, , 13F
這樣就表示d=100進去開始 然後s從960跑到0 d就-1=99
10/07 22:16, 13F

10/07 22:17, , 14F
然後s再從960跑到0 d-1=98 繼續跑下去這樣
10/07 22:17, 14F

10/07 22:17, , 15F
直到d=0才跳出這個迴圈
10/07 22:17, 15F

10/07 22:17, , 16F
太感謝你了 想了很久 謝謝
10/07 22:17, 16F

10/07 22:18, , 17F
等於說會跑大約100*960次
10/07 22:18, 17F

10/07 22:51, , 18F
你為什麼不去單步追蹤看每ㄧ步執行後每個變數的值呢
10/07 22:51, 18F

10/07 23:01, , 19F
真的很想噓,課本先去看清楚,最基本的不瞭解,就免談啦.唉.
10/07 23:01, 19F

10/07 23:12, , 20F
就960會重複d次
10/07 23:12, 20F
文章代碼(AID): #1KC_E_Jo (ask)