왜 제가 "반드시 무시당해야 할 무효 가치"를 얻게 되는 걸까요?
다음과 같은 기능이 있습니다.
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
'source' 카테고리의 다른 글
예외 처리 블록에서 pl/sql 예외를 다시 발생시키는 방법은 무엇입니까? (0) | 2023.06.18 |
---|---|
sqlx 쓰기: 파이프 손상 (0) | 2023.06.18 |
배열의 일부 요소만 일부 값으로 초기화하는 방법은 무엇입니까? (0) | 2023.06.18 |
마이그레이션을 통해 열에 기본값 추가 (0) | 2023.06.18 |
가상 env에 Python Windows 패키지를 설치할 수 있습니까? (0) | 2023.06.18 |