2015-10-13 7 views
0

Я пытаюсь вернуть свою программу случайному числу [-5,5], используя функцию rand() в C. Программа работает, но мне не нравится факт ее предоставления 2 предупреждение каждый раз, когда я компилирую код. Вот код:c4014 при использовании rand() в C

#include <time.h> 
#include<stdio.h> 
int main(int argc, char *argv[]){ 

    int randomNumber = 0; 
    for (int index = 1; index < argc; index++) { 
     printf("The %d is %s\n", index, argv[index]); 
    } 
    getchar(); 

    srand(time(NULL)); 
    randomNumber = (rand()%11)-5; 
    return randomNumber; 

} 

И эти предупреждения:?

warning C4013: 'srand' undefined; assuming extern returning int 
warning C4013: 'rand' undefined; assuming extern returning int 

Почему эти предупреждения появляться я боюсь, что они могут вызвать некоторые проблемы позже, так что я хотел бы устранить эти предупреждения.

изменения:

Добавлена ​​еще одна библиотека:

#include <stdlib.h> 

2 предупреждений нет, 1 новый:

warning C4244: 'function' : conversion from 'time_t' to 'unsigned int', possible loss of data 

Новое предупреждение решается путем изменения в вызове srand к:

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

Этот является окончательной и решенной программой:

#include <time.h> 
#include<stdio.h> 
#include <stdlib.h> 
int main(int argc, char *argv[]){ 

    int randomNumber = 0; 
    for (int index = 1; index < argc; index++) { 
     printf("The %d is %s\n", index, argv[index]); 
    } 
    getchar(); 


    srand((unsigned int)time(NULL)); 
    randomNumber = (rand()%11)-5; 
    return randomNumber; 
} 

SOLVED, пошагово редактировал шаг за шагом для ссылки на другие пользователи. Спасибо

+1

Вы забыли '#include ' –

+0

Как насчет '#include ' или '' #include '? – lit

+0

Включено, 2 предыдущих исчезли, но теперь есть еще один: 'warning C4244: 'function': преобразование из 'time_t' в 'unsigned int', возможную потерю данных' – kadzu

ответ

1

Вам необходимо указать stdlib.h. Именно там определяются эти функции.

+0

Я получаю это предупреждение после включения stdlib.h 'warning C4244: 'function': преобразование из 'time_t' в 'unsigned int', возможную потерю данных – kadzu

+0

@kadzu, вы можете удалить это предупреждение с помощью cast:' srand ((unsigned int) time (NULL)) ; ' –

+0

Спасибо, теперь его решили. – kadzu

0

Вы получаете это предупреждение, поскольку функции rand и srand не определены.

От человека странице:

ИМЯ ранд, rand_r, srand - псевдо-генератор случайных чисел

СИНТАКСИС

#include <stdlib.h> 

    int rand(void); 

    int rand_r(unsigned int *seedp); 

    void srand(unsigned int seed); 

Включив stdlib.h, вы получите прототипы для этих функций, а компилятор может гарантировать, что вы правильно их вызываете.