首页 > 解决方案 > 警告 C4244:'function':从 'time_t' 转换为 'unsigned int',可能丢失数据'

问题描述

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

// Program to generate random numbers, using an array

int main() {
int arr[50];
int i;

srand((unsigned int)time(NULL));
for (i = 0; i < 50; i++)
{
    arr[i] = rand() % 50;
    printf("arr[%d] = %d\t", i, arr[i]);
}
_getch();
return 0;

}

我收到这个警告:

(12):警告 C4244:'function':从 'time_t' 转换为 'unsigned int',可能会丢失数据。

标签: c

解决方案


srand想要一个unsigned intas 参数,但time返回一个time_tunsigned int您的平台上更大的类型,因此警告可能丢失数据。

在这种情况下,可以忽略警告,因为您实际上只是想给srand.

要摆脱警告,您可以将返回的值time转换为unsigned int

srand((unsigned int)time(NULL));

推荐阅读