source

왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요?

factcode 2023. 6. 18. 16:23
반응형

왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요?

다음과 같은 기능이 있습니다.

void getdata(int arr[], int n)
{

    for (int i = 0; i < n; i++) 
    {
        int a = srand(time(NULL));
        arr[i] = a;
    }
}

그리고 나는 그것을 불러들입니다.main:

getdata(arr, 1024);

저는 "무시되어야 할 공허한 가치"를 받지만, 무엇이 잘못된 것인지 이해하지 못합니다.이 오류가 발생하는 이유는 무엇입니까?

  int a = srand(time(NULL));

의 프로토타입srand이라void srand(unsigned int)(포함하는 경우)<stdlib.h>).
이는 아무것도 반환하지 않는다는 것을 의미하지만 반환되는 값을 사용하고 있습니다(???) 초기화를 통해 할당합니다.a.


편집: 다음 작업을 수행해야 합니다.

#include <stdlib.h> /* srand(), rand() */
#include <time.h>   /* 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);
    /* ... */
}

원본 포스터는 GCC 컴파일러 오류 메시지를 인용하고 있지만, 이 스레드를 읽어도 오류 메시지가 제대로 처리되었는지는 @pmg의 답변을 제외하고는 명확하지 않습니다.(+1, btw)


오류: void 값이 무시되어야 하는 것처럼 무시되지 않습니다.

이는 함수의 반환 값이 '보이드'이지만 비보이드 변수에 할당하려고 한다는 GCC 오류 메시지입니다.

예:

void myFunction()
{
   //...stuff...
}

int main()
{
   int myInt = myFunction(); //Compile error!

    return 0;
}

정수 또는 다른 형식에는 void를 할당할 수 없습니다.

OP의 상황에서:

int a = srand(time(NULL));

...는 허용되지 않습니다. srand()문서에 따르면, void를 반환합니다.

이 질문은 다음과 같습니다.

중복임에도 불구하고 이 오류 메시지에 대한 구글의 최상위 결과이기 때문에 답변드립니다.이 스레드가 최고의 결과이기 때문에 이 스레드는 간결하고 명확하며 쉽게 찾을 수 있는 결과를 제공하는 것이 중요합니다.

srand아무것도 반환하지 않으므로 초기화할 수 없습니다.a값을 반환하지 않기 때문에 반환 값을 사용합니다.당신은 전화할 생각이었습니까?rand역시?

    int a = srand(time(NULL))
        arr[i] = a;

그래야 한다

        arr[i] = rand();

그리고 넣음srand(time(NULL))당신의 프로그램의 맨 처음 어딘가에서.

"void value not ignored to be" 이 오류는 srand(시간(NULL))와 같은 함수가 무언가를 반환하지 않고 그것을 무언가를 반환하는 것처럼 처리할 때 발생합니다.대기열에서 pop() 함수의 경우와 마찬가지로, 팝업된 요소를 변수에 저장하면 아무것도 반환하지 않기 때문에 동일한 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/8896281/why-am-i-getting-void-value-not-ignored-as-it-ought-to-be

반응형