srand((unsigned)time(NULL));为什么要强制转换为无符号数据unsigned

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
short a,b=0;
printf("猜数字游戏\n");
printf("数字在1-100之间\n");

srand((unsigned)time(NULL));
b=rand()%100;
b++;
while(a!=b)
{
printf("请输入您要猜的数字\n");
scanf("%hd",&a);
if(a>b)
printf("大了\n");
if(a<b)
printf("小了\n");

}
printf("恭喜您猜对了\n");
return 0;

}
最新回答
皮比墙厚

2021-05-30 02:49:53

这是由srand函数的参数类型限定的,因为srand的原型是:void srand(unsigned seed);,参数类型规定必须为unsigned,所以调用它时需要强制类型转换。
夕颜为谁舞

2022-05-08 11:48:04

转不转都可以。
srand(time(NULL)); 效果也一样,设随机数种子。

srand 的参数是 unsigned int 型,写上 强制转换 当然可以,不写会自动转。
改写下半生

2021-11-17 20:19:57

srand()函数的原型是void srand( unsigned int seed
);。这下清楚了吧!