搜索
查看: 1084|回复: 16
打印 上一主题 下一主题

这随机函数对x有用却对y不起作用

[复制链接]
楼主
发表于 2015-7-14 19:47:19 | 显示全部楼层

回帖奖励 +1

跑两次算啥,至少放循环里面跑20次吧
另外%d是int的占位符,用来输出long long是不合适的
沙发
发表于 2015-7-14 21:43:19 | 显示全部楼层
zhuzhu81998 发表于 2015-7-14 19:51
那请问gcc中long long int和long double类型在scanf和printf中怎样输出和输入

这和gcc没关系,取决于用的libc
板凳
发表于 2015-7-15 00:41:16 | 显示全部楼层
zhuzhu81998 发表于 2015-7-14 21:54
那在啊哈C下怎么用呢?

long long用%I64d
微软的msvcrt环境下long double和double是同一个东西(64位精度IEEE浮点数),正确地做法是不用long double
地板
发表于 2015-7-15 00:43:39 | 显示全部楼层
本帖最后由 rosynirvana 于 2015-7-15 00:49 编辑
福华 发表于 2015-7-14 22:17
我把long long 改掉,用int,并且只srand((unsigned)time(NULL))一次,就对了

乱打乱撞对理解问题没好处
重置两次随机数种子虽然不合适,但是不应该出现y一直是0的情况
5#
发表于 2015-7-15 00:52:07 | 显示全部楼层
想了一下大概还真是long long的问题
2个%d占位符会把2个int的数据传过去,后面一个long long是两个int长
看到的x就是产生的随机数的低位,高位一定是0是因为RAND_MAX小,肯定占不到x的高位
至于y根本就没传进去

70年代的库学起来就是奇葩问题多
6#
发表于 2015-7-15 20:42:05 | 显示全部楼层
福华 发表于 2015-7-15 19:53
什么叫做70年代的库,你是说啊哈C的核心是70年代的吗?

stdio是70年代的库,差不多60年代末70年代初的设计吧
7#
发表于 2015-7-16 00:52:34 | 显示全部楼层
福华 发表于 2015-7-15 22:41
推荐一个使用现代库的编译器,随着知识的积累,单靠啊哈C编译器肯定不够

这和ahaC无关,C标准库就是那时候设计的,无解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表