作者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/cn.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