免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
71 [报告]
发表于 2012-09-29 18:39 |只看该作者
回复 62# starwing83


    哦, 谢谢~

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
72 [报告]
发表于 2012-09-29 18:41 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
73 [报告]
发表于 2012-09-29 19:03 |只看该作者
本帖最后由 isaacxu 于 2012-09-29 20:33 编辑

按标准来肯定争议比较小,个人比较认同这样定义undefined behavior:Behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which the standard imposes no requirements. An example of undefined behavior is the behavior on integer overflow.此外,安全规范上列出来200多种ub的例子及其危险等级,删去这句(有些可能是标准里没有的)

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
74 [报告]
发表于 2012-09-30 10:56 |只看该作者
仔细看了看,感觉挺有意思

论坛徽章:
0
75 [报告]
发表于 2012-09-30 14:56 |只看该作者
本帖最后由 isaacxu 于 2012-09-30 15:21 编辑

srand((int)time(0))这里面还是有讲究的,比如,随机种子是如何的设定,time是如何变化的。因此,使用时初学者要留心这些问题。删去了代码,因为里面可能有误。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
76 [报告]
发表于 2012-10-13 19:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
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
77 [报告]
发表于 2012-10-13 21:39 |只看该作者
回复 76# pmerofc


    我提一点错误:0用在指针上下文中,就是空指针的意思,而且类型是对的(是什么指针上下文,就是什么类型指针)。NULL神马的只是口味问题而已。见这里:

http://oss.org.cn/kernel-book/ccfaq/node66.html

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
78 [报告]
发表于 2012-10-13 22:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
79 [报告]
发表于 2012-10-13 23:18 |只看该作者
回复 76# pmerofc


    有没有符号根本就没关系。time的返回值在2038年之前都不会溢出。2038年之后32位time()就不能用了。

srand根本就不影响随机性,随机序列的随机性由rand的实现决定,srand只不过重新开启一个随机序列罢了,只要每次给的值不同就行。

转换虽然是implementation-defined,但是不能跟着C标准一起想入非非。符号溢出会有signal吗?哪个平台是这么设计的?就算有,编译器也会警告你这种显而易见的严重影响效率的行为。





论坛徽章:
0
80 [报告]
发表于 2012-10-13 23:21 |只看该作者
本帖最后由 sonicling 于 2012-10-13 23:22 编辑

回复 76# pmerofc


    如果真的想你一样钻牛角尖的话,srand((unsigned)time(NULL)) 也是有*严重*问题的。

使用它的程序在两秒滴答间隔之内跑出来的值是一模一样的,一点都不随机!!!这严重影响了用户的使用,这个程序根本就不合格。语法再正确也没用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP