1. int main(void)에서 괄호안의 void를 안써도 오류 없이 컴파일이 되던데 void를 왜 써야하며 어떤 역할을 하는 것인가요?
int main() <==> int main(void) : 모두 같은 것입니다.
void는 데이터형의 일종으로 반환형이 없으며 생략해도 무방합니다.
데이터형은 변수명과 함수명 앞에 올 수 있는데 void는 함수명 앞에서 올 수 있는 데이터 형입니다.
"int Printf(int a)" => 반환하는 값이 있을 경우 int와 같은 데이터형을 선언해 줍니다.
"int Printf(void)" 또는 "int Printf()" => 반환하는 값이 없을 경우 void와 같은 데이터형을 선언해 주거나 생략합니다.
2. C언어에서 반환 값을 기입할 때, 그 중 int정수형 을 선언했으면 return 0; 과같이 정수형 값을 반환시켜줘야한다. 라고 했는데 'int'와 'return 0;'을 각각 안써도 컴파일이 잘 되었습니다. int를 안써도 자동으로 DEV C++ 프로그램에서 입력을 해서 컴파일 한 것인가요?..
네, 원칙적으로는 int형을 선언했으면 return 0(정수형)과 같이 정수형의 값을 반드시 반환시켜줘야 합니다.
예전에 컴파일러가 강화되었을 때는 오류를 발생시켰는데, 현재는 컴파일러가 완화돼서 오류를 발생시키지 않고 실행파일을 생성해 줍니다. 즉 컴파일러의 version이 업데이트 되면서 이 부분을 자동처리 해 주기에, 아래와 같이 코드를 작성해 줘도 정상적으로 작동을 합니다.
#include <stdio.h>
int main()
{
printf("안녕하세요. \n");
}
3.void를 메인함수 앞에 적었을 경우 오류가 뜨고 없애면 프로그램이 수행되는데 그 이유가 무엇인가요?
파일저장시 파일형식을 C source files로 저장해야 에러가 발생하지 않습니다.
확장자를 c로 다시 한번 저장해 보시기 바랍니다.
c++에서는 컴파일러가 오류를 발생시킵니다.