作者moebear (萌熊)
看板Programming
標題[問題] 新手C遭遇問題 逐行執行跟執行的結果不同
時間Fri Jul 24 22:36:04 2015
各位好,我這幾天在寫一個簡單的計算程式,
遭遇到一個問題,我使用函數,
在我進行逐行檢查的時候,傳入值有成功,回傳值也是成功的,
(函數回傳值應該會改變,逐行檢查時也有改變)
但是如果我直接執行exe的話,每次的回傳值都會變成同一個,
第二次或第三次執行的時候回傳值才會改變。
如圖所示
這是自動執行
http://i.imgur.com/vaEhTWc.png
這是逐行檢查
http://i.imgur.com/KbGMDJ5.png
請問到底是哪邊發生問題了?
這個情況我也不知道該拿甚麼關鍵詞去搜尋。拜託各位幫忙解答了。
下面是程式碼
http://codepad.org/ezukUOHW
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.142.160
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Programming/M.1437748568.A.104.html
※ 編輯: moebear (36.226.142.160), 07/24/2015 22:41:34
1F:推 EdisonX: func 裡把 srand 拿掉就可以了123.195.169.158 07/24 22:44
2F:→ moebear: 謝謝! 解決問題了 36.226.142.160 07/24 22:48
我想了解一下為什麼會發生這個問題,方便回答嗎?
※ 編輯: moebear (36.226.142.160), 07/24/2015 22:54:49
3F:→ stimim: 你可以先上網看 srand 和 time 函數的說明 220.134.4.17 07/24 23:25
5F:→ EdisonX: time(NULL) 是取得目前的時間截記,每秒更123.195.169.158 07/24 23:59
6F:→ EdisonX: 新一次,換句話說,同一個公式,你的 func123.195.169.158 07/24 23:59
7F:→ EdisonX: 一直用相同的亂數初值(同一秒)代入...123.195.169.158 07/24 23:59
如果我的理解沒錯的話,是srand重置了時間標記,產生了一組亂數序列,
rand是從這亂數序列裡面取,每次用rand都會往後面取,所以一般來說不會重複。
但是我程式碼在for裡面使用srand,在同一秒用相同的時間做出相同的時間標記,
產生同一組亂數序列,而rand本身的記數也被重置,所以才會一直出同樣的結果,
而逐行執行的時間超過一秒,才會出不同的結果,是這樣嗎?
※ 編輯: moebear (36.224.250.232), 07/25/2015 12:22:14
8F:推 PRAM: 你自己再做個實驗測試不就知道了 114.36.64.44 07/25 19:22