¿Por qué estoy obteniendo el “valor nulo no ignorado como debería ser”?

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)


error: el valor de anulación no se ignora como debería ser

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:

  • error: el valor de anulación no se ignora como debería ser
  • “el valor vacío no se ignora como debería ser” – Qt / C ++
  • Error de comstackción de GCC C, el valor nulo no se ignora como debería ser

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.