免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 初中级C语言水平自测:srand((int)time(0)); 有没有错? [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
11 [报告]
发表于 2012-10-14 01:16 |显示全部楼层
回复 78# pmerofc


    pm,我个人觉得吧,这个语句本身其实没有这么严重的问题,要正视错误对不对?srand这个语句,严格意义上来说,除了(int)以外的问题都是口味问题,而(int)转换——实践上不影响,因为目前我见过的机器都是unsigned -> signed ->unsigned 会还原的。而我见过的编译器在不能还原的时候都会给警告的(xxx到yyy的转换可能损失精度)。退一万步说,就算不还原也无所谓,因为srand需要的值本来就是不要求是啥,最后,0和1原则上不属于Magic Number。

最后,我个人建议这一句着重说口味,说明一下各种口味问题,但是口味问题也不要有倾向!别说这句写的是错的——事实上,implementation-defined也不是错……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
12 [报告]
发表于 2012-10-14 05:27 |显示全部楼层
回复 94# sonicling


    我想知道seed少和数列少有什么关系………………

你给的是个unsigned,你哪怕给全0或者全1都能给你生成随机的数列,问题仅仅在于随机性不太一样。

如果seed非要达到多少bit的话,就不需要rand了,光seed自己的随机性就能保证一些应用了= =

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
13 [报告]
发表于 2012-10-14 08:32 |显示全部楼层
回复 97# pmerofc


    还是不对,因为srand的参数是unsigned,即使强制转换到int,也会最终转到unsigned,最终srand得到的数据量是一样多的。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
14 [报告]
发表于 2012-10-14 09:39 |显示全部楼层
回复 100# pmerofc


    反正转到int虽然说是implementation-defined,但是没说会损失精度啊,而且再怎么说int和unsigned int是同一个conversion level的嘛……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
15 [报告]
发表于 2012-10-14 21:07 |显示全部楼层
回复 111# pmerofc


    画蛇添足和错误似乎没啥关系的说……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
16 [报告]
发表于 2012-10-14 21:37 |显示全部楼层
回复 115# pmerofc


    实事求是的说,这不是错误。

判断问题不能太过主观。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
17 [报告]
发表于 2012-10-15 04:47 |显示全部楼层
本帖最后由 starwing83 于 2012-10-15 04:49 编辑

回复 117# pmerofc


    奥卡姆剃刀从没有说什么概念是错误的,只是说什么概念是不必要的。

对宏观的物理现象,量子力学的内容/解释就是会被剃掉的,难道量子力学是错的?

奥卡姆剃刀实际上是在一个模型上工作的。绝对没有涉及到所谓“真理”“对错”,仅仅是告诉你,什么模型是方便工作的而已。并不会涉及对错问题。

不是说,这个理论在这里没必要被剃掉了,这个理论就是错的,而是说,这个理论用不上。如果你非要用,随便你,看的人也会自动剃掉的。

这里的(int)就是属于没必要,但是实事求是的说,从语法上,从语义上,他都不是错的。只是在教育上,写到一本书里,是不合适的。

单纯说这个写法,是不推荐,不赞同,而不是错的。一定一定要分清楚对错的界限,用精确的词描述,这跟剃刀没关系。


PS:我对这种说法很敏感。我入门是看谭书,谭书经常说这个是错的那个是错的。但是从来不解释到底错的是什么意思:是不能这么写?还是这么写不好?还是根本过不了编译?没有任何解释。在那个年代要找到一台电脑试验是一件很困难的事情。所以给了我近两年的各种困扰。我希望一本书能严格地使用合适的术语:不合适的、不推荐的、语法错误、语义错误、不遵守标准或者不遵守XXX编程规范,而不是单纯一句“错的”了事。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
18 [报告]
发表于 2012-10-15 10:38 |显示全部楼层
回复 119# pmerofc


    你觉得不合适的就是错的,我觉得对错是个绝对概念,而合适是个相对概念。

你说的对错我认为是我说的合适,而我对对错的定义更严格,是逻辑上的真假。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
19 [报告]
发表于 2012-10-16 12:21 |显示全部楼层
回复 124# pmerofc


    四平八稳的话可以是说了很多。特别是技术方面的东西,毕竟不是政治。

比如goto,以前所谓“意大利面”是有历史原因的,是因为缺乏有效的结构化流程控制工具。现在已经不存在这个问题了。因为现代语言都有成熟的if,while,repeat等等控制方式,所以现在只要不是故意这么写,否则goto就不会造成问题,请问这话又怎么会“什么都没说”呢?

真正什么都没说的是风格问题,因为“都对”,根本不需要说什么。之前我好像也说了一点,基本上已经够了。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
20 [报告]
发表于 2012-10-17 10:09 |显示全部楼层
回复 143# liuiang


    64bit的确会特殊一点,不过这个不是重点………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP