看板 C_and_CPP 關於我們 聯絡資訊
void wait ( double seconds ) { clock_t endwait; endwait = clock () + seconds * CLOCKS_PER_SEC ; while (clock() < endwait) {} } 1.不能直接while(0<endwait)嗎? 2.如果這是放在for迴圈裡跑 那clock()會重算嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.14.246
su31o4gj83:不能直接while, endwait是一個你設定好的目標 07/06 20:46
su31o4gj83:就像是你預訂晚上九點要看電視, endwait就是晚上九點 07/06 20:46
su31o4gj83:while(0 < endwait)會是個無窮迴圈 07/06 20:48
su31o4gj83:for loop其實就是while loop 07/06 20:52
hyestt:那麼clock()是什麼? 07/06 21:18
hyestt:依上述的例子是指? 07/06 21:19
su31o4gj83:我先丟幾個網頁給你 07/06 21:31
su31o4gj83:上面那個網頁選clock, 抱歉我很少在縮網址, 不太熟 07/06 21:33
su31o4gj83:根據網頁的說法, clock()是傳回某段時間, 單位為毫秒 07/06 21:40
su31o4gj83:某段時間是"從程式開始跑 至 clock()呼叫"的這段時間 07/06 21:42
su31o4gj83:其實我解釋的不好, 第二個網頁說明得比較清楚 07/06 21:48
hyestt:不過在endwait那行式子中的clock()為什麼不會跑? 07/06 21:48
su31o4gj83:clock()是tick的次數, CLOCKS_PER_SEC是每秒tick幾次 07/06 21:50
hyestt:如果程式開始就跑的話那while那段程式不就會一直跑 07/06 21:50
su31o4gj83:clock()只是做"一次"動作, 回傳函式從開始到執行clock 07/06 21:52
su31o4gj83:間, tick了幾次 07/06 21:53
su31o4gj83:對, 沒錯, while會一直跑 07/06 21:54
su31o4gj83:例如執行wait(1), endtime就被設定為執行到endtime那行 07/06 21:56
su31o4gj83:之後的一秒, 接著while一直跑, 直到clock()超過endtime 07/06 21:57
hyestt:我了解了 真是謝謝你~ 07/06 22:06