메뉴 건너뛰기

main 함수 관련 문의

okchoi 2022.05.02 11:38 조회 수 : 14

void main()  vs int main()

함수의 경우에도 변수처럼 형선언을 해줘야 하는데

void, int, float, char등과 같은 데이터형으로 표현이 가능합니다.

 

변수의 경우 정수형(short int long), 실수형(float double), 문자형(char)등과 같은 데이터형이 있는데

함수의 경우에는 위의 데이터형 + void형이 존재합니다.

 

void의 형의 경우 return 받는 결과값이 없다는 뜻으로 아무런 값도 반환 받지 않아도 됩니다.

그러나 int형으로 선언을 하게 되면 반드시 정수형의 값을 하나 반환받아야 합니다.

따라서 main()문장의 마지막에 "return 0;"이라는 코드를 넣어 준 것입니다.

 

 

꼭 return 0 이 아니고 return 100 retun 5 등 정수형 값을 하나 반환시켜 주면 됩니다.

 

void를 메인함수 앞에 적었을 경우 오류가 뜨고 없애면 프로그램이 수행되는데 그 이유가 무엇인가요?

 

파일저장시 파일형식을 C source  files로 저장해야 에러가 발생하지 않습니다.

확장자를 c로 다시 한번 저장해 보시기 바랍니다.

 

c++에서는 컴파일러가 오류를 발생시킵니다.

 

2. int main(void)에서 괄호안의 void를 안써도 오류 없이 컴파일이 되던데 void를 왜 써야하며 어떤 역할을 하는 것인가요?

 

함수는 변수와는 다르게 void형이라는 데이터 형이 있습니다.

데이터형은 변수명과 함수명 앞에 올 수 있는데 void는 함수명 앞에서 올 수 있는 데이터 형입니다.

 

void형의 경우 값을 반환 받지 않아도 되는 데이터형으로 생략이 가능합니다.

 

따라서  int main(void)   ==    int main()   모두 같은 표현방식입니다.

 

또한 아래와 같이 void를 생략해도 전혀 문제가 되지 않습니다.

 

#include <stdio.h>

 

main(){

            printf("void는 생략 가능합니다.\n"); 

}

 

 

"int Printf(int a)"  => 반환하는 값이 있을 경우 int와 같은 데이터형을 선언해 줍니다.

"int Printf(void)" 또는 "int Printf()"  => 반환하는 값이 없을 경우 void와 같은 데이터형을 선언해 주거나 생략합니다. 

 

3. C언어에서 반환 값을 기입할 때, 그 중 int정수형 을 선언했으면 return 0; 과같이 정수형 값을 반환시켜줘야한다. 라고 했는데 'int'와 'return 0;'을 각각 안써도 컴파일이 잘 되었습니다. int를 안써도 자동으로 DEV C++ 프로그램에서 입력을 해서 컴파일 한 것인가요?..

 

네, 원칙적으로는 int형을 선언했으면 return 0(정수형)과 같이 정수형의 값을 반드시 반환시켜줘야 합니다.

예전에 컴파일러가 강화되었을 때는 오류를 발생시켰는데, 현재는 컴파일러가 완화돼서 오류를 발생시키지 않고 실행파일을 생성해 줍니다. 즉 컴파일러의 version이 업데이트 되면서 이 부분을 자동처리 해 주기에, 아래와 같이 코드를 작성해 줘도 정상적으로 작동을 합니다.

 

#include <stdio.h>

 

int main()

{

        printf("안녕하세요. \n");

{

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 메인 함수가 2개 라는 에러메시지 발생했을 때 해결 방법 okchoi 2022.05.30 34
공지 [warning] implicit declaration of function 'scanf_s' 해결책 okchoi 2022.05.24 36
공지 main' must return 'int' 오류에 대한 해결방법 okchoi 2022.05.02 1061
» main 함수 관련 문의 okchoi 2022.05.02 14
공지 Dev C++ 테마파일 적용시키기 okchoi 2022.04.19 60
공지 연산자 나머지(%%) 표현 방법 okchoi 2022.04.11 241
공지 실행파일 사라지는 현상 okchoi 2022.04.10 10
공지 새로운 프로젝트 생성 방법 okchoi 2022.04.04 10
공지 main 함수 앞에 int, 마무리 할 때 return 0;은 무조건 써야 하는 건가요? okchoi 2022.03.22 363
공지 기말고사 Q/A 모음 okchoi 2021.12.03 23
공지 [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode 해결방법 okchoi 2021.11.22 58
공지 scanf_s vs scanf okchoi 2021.10.23 16
공지 압축상태에서 프로젝트 파일 클릭시 일어나는 현상 okchoi 2021.09.24 8
공지 파일 확장명 표시하는 방법 okchoi 2021.09.12 77
공지 (C/C++)맥북에서 C언어,C++ 개발 환경 세팅하기 okchoi 2021.09.04 18
공지 Layout 파일 okchoi 2021.07.31 13
공지 Dev C++ 언어 한글(Korean) 설정 okchoi 2021.03.08 2819
공지 void main() 사용시 오류 okchoi 2020.10.24 579
공지 변수 선언 방법 okchoi 2020.07.09 9
공지 Id returned 1 exit status 오류 해결 방법 okchoi 2020.04.20 11107
18 [Warning] implicit declaration of function 'system' [-Wimplicit-function-declaration] okchoi 2020.12.07 5
17 파일명 확장자가 보이지 않을 떄 file okchoi 2020.10.16 8
16 Dev C++에서 헤더파일 추가하는 방법 okchoi 2020.10.05 152
15 오버플로우가 발생하는 이유가 보수와 관련이 있나요? okchoi 2020.09.27 3
14 Makefile.win 파일 okchoi 2020.09.08 13
13 조건문에서 중괄호 사용 + putchar 문의 드립니다. okchoi 2020.07.10 6
12 scanf에서 &의 역할 okchoi 2020.06.30 29
11 전처리기 지시자의 의미 okchoi 2020.06.12 30
10 [warning] implicit declaration of function 'scanf_s' 해결책 okchoi 2020.06.12 37
9 Dev-c++에서 for 오류 file okchoi 2020.05.16 7
8 c언어 자리수 출력 okchoi 2020.05.05 8
7 putchar, getchar, scanf_s() 관련 질문입니다. okchoi 2020.05.01 12
6 산술연산자 나눗셈 사용법에 대해서 질문 드립니다. okchoi 2020.04.30 601
5 새로운 프로젝트 생성시 C++ vs C 선택의 차이점 okchoi 2020.04.30 11
4 scanf_s 사용시 공백까지 포함해서 문자열을 입력받고 싶을 경우 file okchoi 2020.04.19 47
3 질문있습니다. (scanf() 사용시 개행문자를 넣지 않는 이유) okchoi 2020.04.18 290
위로