请教C语言中百分号的作用问题:rand()%400

food.x=rand()%400+60;
food.y=rand()%350+60;
这两个句子是表示表示控制食物出现的位置范围,x的范围是60到460;y的范围是60到410.但是我就不明白为什么是这个范围,rand()函数产生的数值的范围是多少啊?还有,%表示取余数,我的印象中rand()函数应该是产生0到1的数,那范围就不是这样啊,请高手指点,谢谢!

第1个回答  2011-08-14
%就是求余数,%400就是除以400的余数,比如546%400,余数146,结果就是146.
rand()就是个随机数,然后对400求余数,余数的结果必然在0到399,加上60,也就是60到459,应该是取不到460的。y类似。
第2个回答  2011-08-14
rand() 产生0-65535的数
在limits.h里有定义
%400后产生一个0-399的数
+60 则为 60 --459本回答被提问者采纳
第3个回答  2011-08-14
你的印象错了,rand()函数不是产生0到1的数,而是产生一个随机的int型整数,使用rand()函数前最好先加上
srand(time(NULL));这样rand()产生的数会更加随机
第4个回答  2011-08-14
我用61改的贪吃蛇,通过查看寄存器,rand()返回的确实是随机的,61是十六位的,返回值在0到0xFFFF 间。你可以调出寄存器窗口查看返回值到底是多少。由于0<=(rand()%400)<=400,
所以 60<=(rand()%400+60)<=460,food.y同理
第5个回答  2011-08-14
rand函数一般范围0--32767 所以rand()%400 范围 0-400 所以rand()%400+60 是 60-460
rand()%350 范围 0-350 所以rand()%350+60; 是 60-410
相似回答