[問題] 新手C遭遇問題 逐行執行跟執行的結果不同

看板Programming作者 (萌熊)時間9年前 (2015/07/24 22:36), 9年前編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
各位好,我這幾天在寫一個簡單的計算程式, 遭遇到一個問題,我使用函數, 在我進行逐行檢查的時候,傳入值有成功,回傳值也是成功的, (函數回傳值應該會改變,逐行檢查時也有改變) 但是如果我直接執行exe的話,每次的回傳值都會變成同一個, 第二次或第三次執行的時候回傳值才會改變。 如圖所示 這是自動執行 http://i.imgur.com/vaEhTWc.png
這是逐行檢查 http://i.imgur.com/KbGMDJ5.png
請問到底是哪邊發生問題了? 這個情況我也不知道該拿甚麼關鍵詞去搜尋。拜託各位幫忙解答了。 下面是程式碼 http://codepad.org/ezukUOHW -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.142.160 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1437748568.A.104.html ※ 編輯: moebear (36.226.142.160), 07/24/2015 22:41:34

07/24 22:44, , 1F
func 裡把 srand 拿掉就可以了
07/24 22:44, 1F

07/24 22:48, , 2F
謝謝! 解決問題了
07/24 22:48, 2F
我想了解一下為什麼會發生這個問題,方便回答嗎? ※ 編輯: moebear (36.226.142.160), 07/24/2015 22:54:49

07/24 23:25, , 3F
你可以先上網看 srand 和 time 函數的說明
07/24 23:25, 3F

07/24 23:58, , 4F
亂數 http://goo.gl/eF7X7G 看完第二點
07/24 23:58, 4F

07/24 23:59, , 5F
time(NULL) 是取得目前的時間截記,每秒更
07/24 23:59, 5F

07/24 23:59, , 6F
新一次,換句話說,同一個公式,你的 func
07/24 23:59, 6F

07/24 23:59, , 7F
一直用相同的亂數初值(同一秒)代入...
07/24 23:59, 7F
如果我的理解沒錯的話,是srand重置了時間標記,產生了一組亂數序列, rand是從這亂數序列裡面取,每次用rand都會往後面取,所以一般來說不會重複。 但是我程式碼在for裡面使用srand,在同一秒用相同的時間做出相同的時間標記, 產生同一組亂數序列,而rand本身的記數也被重置,所以才會一直出同樣的結果, 而逐行執行的時間超過一秒,才會出不同的結果,是這樣嗎? ※ 編輯: moebear (36.224.250.232), 07/25/2015 12:22:14

07/25 19:22, , 8F
你自己再做個實驗測試不就知道了
07/25 19:22, 8F
文章代碼(AID): #1LiarO44 (Programming)
文章代碼(AID): #1LiarO44 (Programming)