정의
함수를 사용하면 어떠한 값을 반환해야 한다. 따라서, 함수를 사용할 때는 return 값을 설정 해 주어야한다. void는 예외인데, 맨 아래 설명을 참조하면 된다. 아래는 입력한 값만큼 입력한 값을 입력한 값만큼 반복해서 출력하는 코드이다.
#include <stdio.h>
#pragma warning(disable:4996)
int output(int a)
{
int i;
for (i = 0; i < a; i++)
{
printf("%d\n",a);
}
}
int main(void)
{
int a;
scanf("%d", &a);
output(a);
return 0;
}
이 경우 warning C4716: 'output': 값을 반환해야 한다. 와 같이 C4716 에러가 발생한다.
이는, int output(int a)라고 정의된 함수의 return 값이 정의되어 있지 않기 때문이다. 따라서 아래와 같이 return 값을 정의 해 주면 에러가 발생하지 않는다.
#include <stdio.h>
#pragma warning(disable:4996)
int output(int a)
{
int i;
for (i = 0; i < a; i++)
{
printf("%d\n",a);
}
return 0; // return 값 정의
}
int main(void)
{
int a;
scanf("%d", &a);
output(a);
return 0;
}
return 0을 추가함으로써 더 이상 C4716 에러가 발생하지 않는다. 그렇다면 return이 필요없는 함수라면 어떻게 설정해야 할까?
바로, void output(int a)로 설정하여 return을 설정하지 않고 C4716 에러도 발생시키지 않을 수 있다.
#include <stdio.h>
#pragma warning(disable:4996)
void output(int a)
{
int i;
for (i = 0; i < a; i++)
{
printf("%d\n",a);
}
}
int main(void)
{
int a;
scanf("%d", &a);
output(a);
return 0;
}
'C C++ > C언어 기초' 카테고리의 다른 글
C언어 while 반복문의 모든 것 (feat. while문 예시, do~while문) (0) | 2022.03.20 |
---|---|
C4033 에러: 컴파일러 경고(수준 1) (0) | 2022.01.20 |
C언어 #8 - 상수 (int, double, 접미사, const) (0) | 2022.01.01 |
C언어 #7 - 자료형의 이해 (int, long, float, double, char, short, long long) (0) | 2022.01.01 |
C언어 #6 - C언어 10진수, 16진수, 8진수 출력 (0) | 2021.12.28 |
댓글