최근 편집
최근 토론
게시판 메인
도구
투표
무작위 문서
스킨 설정
파일 올리기
기타 도구
216.73.216.110
IP
사용자 도구
사용자 설정
로그인
회원 가입
최근 편집
최근 토론
돌아가기
삭제
이동
파일 올리기
C언어
(편집) (3)
(편집 필터 규칙)
2058,4719
== 예시 == 다음 간단한 코드가 무엇을 의미하는지 생각해 보자. {{{#!syntax C #include <stdio.h> int main(void) { int num; printf("10진수 정수를 입력하세요.\n"); scanf("%d",&num); printf("16진수로 표현하면 %x입니다.\n", num); return 0; } }}} 먼저 첫 줄부터 살펴보자. 첫 줄은 {{{#!syntax C #include <stdio.h> }}} 라고 쓰여 있다. C 계열 언어(C, C++, Java, C#) 전반에 걸쳐 #키워드 구문은 전처리기(preprocessor)에게 특정 명령을 내리는 구문이다. #include는 해당 소스 파일을 인클루드[* #include는 컴파일 이전에 전처리기가 #include 구문이 있는 자리에 해당 파일을 복사한다는 의미이다.]하라는 명령이다. 표준 C 언어 규약으로 꺾쇠괄호(<>) 안에 파일명이 있다면 정해진 인클루드 디렉터리(include directory)에서 그 파일을 찾아 인클루드하고, 따옴표("") 안에 파일명이 있다면 로컬 디렉터리(local directory)에서 그 파일을 찾아 인클루드한다. 여기서는 표준 C 헤더인 stdio.h(std = standard, io = Input/Output)를 인클루드하라는 것이다. 세번째 줄에 {{{#!syntax C int main(void) }}} 라고 나와 있다. 매개변수가 있어야 할 곳에 void 키워드가 있는데, 이는 매개변수가 없음을 명시적으로 드러내는 것이다.[* 아무것도 없으면 암시적으로 없음을 알린다고 한다.] 반환값은 32비트 정수형인데 이는 표준 C 언어의 규약이다. 반환값은 일반적으로 0인 경우 정상 종료, -1인 경우 비정상 종료를 의미한다. 이제 main( ) 함수 내부의 본문이다. 처음에 나온 문장은 {{{#!syntax C int num; }}} 인데 이것은 앞에서 다루었으므로 설명을 생략한다. 그 다음은 {{{#!syntax C printf("10진수 정수를 입력하세요.\n"); }}} 이라 나와 있다. printf( ) 함수는 매개변수로 받은 내용을 출력한다. 여기서 \n은 라인 피드(line feed, LF)라고 부르는데, 출력문이 다음 줄로 넘어가도록 지시한다. Windows에서는 키보드의 엔터 키를 누르면 라인 피드와 캐리지 리턴(carrige return, CR; \r)이 같이 입력되는 반면, Mac OS에서는 엔터 키를 누르면 라인 피드만 입력된다.[* 캐리지 리턴을 입력하려면 리턴 키를 눌러야 한다.] 다음으로 {{{#!syntax C scanf("%d", &num); }}} 가 나오는데, 이때 중요한 점은 num이 아니라 &num이 매개변수에 입력된다는 것이다. 이러한 이유는 scanf( ) 함수는 입력되는 숫자를 10진수로 인식하여(%d, d = decimal) num에 입력해야 하는데 num의 주소를 모르므로 num의 주소를 받는 것이다. 이러면 num에 제대로 입력된다. 그 다음 다시 {{{#!syntax C printf("16진수로 표현하면 %x입니다.\n", num); }}} 이 나온다. %x는 16진수(heXadecimal)을 의미한다. 보통 프로그래머들은 16진수 표현에서 0x129A23과 같은 표현을 좋아하므로 %#x를 써서 앞에 0x가 붙도록 지시한다. 여기서 %d, %x와 같은 것들을 서식문자라 부르는데, 이에 대해 간단히 정리하면 다음과 같다. {{{#!syntax C /* %c : 단일 문자. Character %s : 문자열. String %d : 10진수 32비트 정수. Decimal %ld : 10진수 64비트 정수. Long Decimal %lld : %o : 8진수 32비트 정수. Octal (보통 프로그래머들은 일부러 %#o를 써서 숫자 앞에 0이 붙도록 한다.) %x, %X : 16진수 32비트 정수. heXadecimal (보통 프로그래머들은 일부러 %#x를 써서 숫자 앞에 0x가 붙도록 한다.) %u : 10진수 32비트 '부호가 없는' 정수. Unsigned decimal %f : 32비트 단일 정밀도 실수. Float %lf : 64비트 복수 정밀도 실수. Long Float %e, %E : 지수 표기법. Exp (%E도 같은 표현. 단, 출력시 e냐 E냐의 차이일 뿐이다.) %g, %G : 소수점 이하의 자릿수에 따라 %f와 %e/%E 중 자동 선택. %p : 포인터가 가리키는 변수의 주소. %% : 퍼센트 표현. */ }}} {{{#!syntax C /* %3d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. %03d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. 비어 있는 곳은 0으로 채움. %-3d : 3자리 칸을 만들어 왼쪽 정렬로 숫자 출력. %+3d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. 이때 부호 표기. */ }}} 마지막으로 {{{#!syntax C return 0; }}} 가 나오는데, 이는 main( ) 함수를 호출한 상위함수에 0을 반환한다. 이는 정상적인 종료를 의미하며, 상위함수는 리소스를 정리하고 OS에 종료 신호를 보내 OS가 종료시키도록 한다.
(임시 저장)
(임시 저장 불러오기)
기본값
모나코 에디터
normal
namumark
namumark_beta
macromark
markdown
custom
raw
(↪️)
(💎)
(🛠️)
(추가)
== 예시 == 다음 간단한 코드가 무엇을 의미하는지 생각해 보자. {{{#!syntax C #include <stdio.h> int main(void) { int num; printf("10진수 정수를 입력하세요.\n"); scanf("%d",&num); printf("16진수로 표현하면 %x입니다.\n", num); return 0; } }}} 먼저 첫 줄부터 살펴보자. 첫 줄은 {{{#!syntax C #include <stdio.h> }}} 라고 쓰여 있다. C 계열 언어(C, C++, Java, C#) 전반에 걸쳐 #키워드 구문은 전처리기(preprocessor)에게 특정 명령을 내리는 구문이다. #include는 해당 소스 파일을 인클루드[* #include는 컴파일 이전에 전처리기가 #include 구문이 있는 자리에 해당 파일을 복사한다는 의미이다.]하라는 명령이다. 표준 C 언어 규약으로 꺾쇠괄호(<>) 안에 파일명이 있다면 정해진 인클루드 디렉터리(include directory)에서 그 파일을 찾아 인클루드하고, 따옴표("") 안에 파일명이 있다면 로컬 디렉터리(local directory)에서 그 파일을 찾아 인클루드한다. 여기서는 표준 C 헤더인 stdio.h(std = standard, io = Input/Output)를 인클루드하라는 것이다. 세번째 줄에 {{{#!syntax C int main(void) }}} 라고 나와 있다. 매개변수가 있어야 할 곳에 void 키워드가 있는데, 이는 매개변수가 없음을 명시적으로 드러내는 것이다.[* 아무것도 없으면 암시적으로 없음을 알린다고 한다.] 반환값은 32비트 정수형인데 이는 표준 C 언어의 규약이다. 반환값은 일반적으로 0인 경우 정상 종료, -1인 경우 비정상 종료를 의미한다. 이제 main( ) 함수 내부의 본문이다. 처음에 나온 문장은 {{{#!syntax C int num; }}} 인데 이것은 앞에서 다루었으므로 설명을 생략한다. 그 다음은 {{{#!syntax C printf("10진수 정수를 입력하세요.\n"); }}} 이라 나와 있다. printf( ) 함수는 매개변수로 받은 내용을 출력한다. 여기서 \n은 라인 피드(line feed, LF)라고 부르는데, 출력문이 다음 줄로 넘어가도록 지시한다. Windows에서는 키보드의 엔터 키를 누르면 라인 피드와 캐리지 리턴(carrige return, CR; \r)이 같이 입력되는 반면, Mac OS에서는 엔터 키를 누르면 라인 피드만 입력된다.[* 캐리지 리턴을 입력하려면 리턴 키를 눌러야 한다.] 다음으로 {{{#!syntax C scanf("%d", &num); }}} 가 나오는데, 이때 중요한 점은 num이 아니라 &num이 매개변수에 입력된다는 것이다. 이러한 이유는 scanf( ) 함수는 입력되는 숫자를 10진수로 인식하여(%d, d = decimal) num에 입력해야 하는데 num의 주소를 모르므로 num의 주소를 받는 것이다. 이러면 num에 제대로 입력된다. 그 다음 다시 {{{#!syntax C printf("16진수로 표현하면 %x입니다.\n", num); }}} 이 나온다. %x는 16진수(heXadecimal)을 의미한다. 보통 프로그래머들은 16진수 표현에서 0x129A23과 같은 표현을 좋아하므로 %#x를 써서 앞에 0x가 붙도록 지시한다. 여기서 %d, %x와 같은 것들을 서식문자라 부르는데, 이에 대해 간단히 정리하면 다음과 같다. {{{#!syntax C /* %c : 단일 문자. Character %s : 문자열. String %d : 10진수 32비트 정수. Decimal %ld : 10진수 64비트 정수. Long Decimal %lld : %o : 8진수 32비트 정수. Octal (보통 프로그래머들은 일부러 %#o를 써서 숫자 앞에 0이 붙도록 한다.) %x, %X : 16진수 32비트 정수. heXadecimal (보통 프로그래머들은 일부러 %#x를 써서 숫자 앞에 0x가 붙도록 한다.) %u : 10진수 32비트 '부호가 없는' 정수. Unsigned decimal %f : 32비트 단일 정밀도 실수. Float %lf : 64비트 복수 정밀도 실수. Long Float %e, %E : 지수 표기법. Exp (%E도 같은 표현. 단, 출력시 e냐 E냐의 차이일 뿐이다.) %g, %G : 소수점 이하의 자릿수에 따라 %f와 %e/%E 중 자동 선택. %p : 포인터가 가리키는 변수의 주소. %% : 퍼센트 표현. */ }}} {{{#!syntax C /* %3d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. %03d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. 비어 있는 곳은 0으로 채움. %-3d : 3자리 칸을 만들어 왼쪽 정렬로 숫자 출력. %+3d : 3자리 칸을 만들어 오른쪽 정렬로 숫자 출력. 이때 부호 표기. */ }}} 마지막으로 {{{#!syntax C return 0; }}} 가 나오는데, 이는 main( ) 함수를 호출한 상위함수에 0을 반환한다. 이는 정상적인 종료를 의미하며, 상위함수는 리소스를 정리하고 OS에 종료 신호를 보내 OS가 종료시키도록 한다.
비로그인 상태입니다. 편집한 내용을 저장하면 지금 접속한 IP가 기록됩니다.
편집을 전송하면 당신은 이 문서의 기여자로서 본인이 작성한 내용이
CC BY 4.0
에 따라 배포되고, 기여한 문서의 하이퍼링크나 URL로 저작자 표시가 충분하다는 것에 동의하는 것입니다.
전송
미리보기