Tengo la siguiente función:
void getdata(int arr[], int n) { for (int i = 0; i < n; i++) { int a = srand(time(NULL)) arr[i] = a; } }
Y lo llamo en main
:
getdata(arr,1024);
Recibo “el valor nulo no se ignora como debería ser”, pero no entiendo lo que está mal. ¿Por qué me sale este error?
int a = srand(time(NULL));
El prototipo para srand
es void srand(unsigned int)
(siempre que haya incluido
).
Esto significa que no devuelve nada … pero está usando el valor que devuelve (???) para asignar, por inicialización, a a
.
Edición: esto es lo que necesitas hacer:
#include /* srand(), rand() */ #include /* time() */ #define ARRAY_SIZE 1024 void getdata(int arr[], int n) { for (int i = 0; i < n; i++) { arr[i] = rand(); } } int main(void) { int arr[ARRAY_SIZE]; srand(time(0)); getdata(arr, ARRAY_SIZE); /* ... */ }
El póster original está citando un mensaje de error del comstackdor GCC, pero incluso leyendo este hilo, no está claro si el mensaje de error está correctamente dirigido, excepto por la respuesta de @ pmg . (+1, por cierto)
Este es un mensaje de error de GCC que significa que el valor de retorno de una función es ‘nulo’, pero que está tratando de asignarlo a una variable no nula.
Ejemplo:
void myFunction() { //...stuff... } int main() { int myInt = myFunction(); //Compile error! return 0; }
No está permitido asignar void a enteros, ni a ningún otro tipo.
En la situación del OP:
int a = srand(time(NULL));
…No se permite. srand()
, según la documentación , devuelve vacío .
Esta pregunta es un duplicado de:
Estoy respondiendo, a pesar de ser duplicados, porque este es el mejor resultado en Google para este mensaje de error. Debido a que este hilo es el resultado principal, es importante que este hilo dé un resultado conciso, claro y fácil de encontrar.
srand
no devuelve nada, por lo que no puede inicializar a
con su valor de retorno porque, bueno, porque no devuelve un valor. ¿Querías llamar a rand
también?
int a = srand(time(NULL)) arr[i] = a;
Debiera ser
arr[i] = rand();
Y ponga srand(time(NULL))
algún lugar al comienzo de su progtwig.
“el valor del vacío no se ignora como debería ser” este error se produce cuando la función como srand (tiempo (NULL)) no devuelve algo y lo está tratando como está devolviendo algo. Como en el caso de la función pop () en la cola, si almacena el elemento emergente en una variable, obtendrá el mismo error porque no devuelve nada.