/C
📌 C 프로그램의 특징
- C의 기본 단위 = 함수
모든 C 프로그램은 main 함수를 갖고 있어야 한다. 컴퓨터가 C 실행 시에 제일 먼저 main 함수를 호출한다.
- 함수 내 각 명령문은 세미콜론(;)으로 끝나야 한다
명령문은 기능 정의를 위해 사용되는 문장으로, 위에서 아래로 순차적으로 실행된다.
- 대소문자 구분
- 자유 형식(free-format) 허용
문법만 맞으면 어떻게 쓰더라도 상관없다. 그렇지만 코드의 가독성을 챙기는 것이 좋다.
- 주석
//한 줄 주석은 이렇게 작성한다
/*
여러 줄
주석은
이런 식으로
작성한다
*/
/*
주석 안에
//주석을 중첩하는 것도
가능하다
*/
다만 여러 줄 주석 안에 여러 줄 주석을 중첩하는 것은 불가능하다는 것을 유념해야 한다. (인식 상 오류 발생)
📌 printf() 함수
- C언어에서의 대표적인 입출력 함수로, 여러 종류의 데이터를 다양한 서식에 맞춰 출력한다.
- printf() 함수의 원형은 다음과 같다:
#include <stdio.h>
int printf(const char * restrict format, ...);
- printf에서의 f는 format의 약자이다. 서식화된 출력을 지원하며, 어떤 서식을 출력할지 지정하는 것이 가능하다.
printf("printf() 함수의 서식 지정 \n");
printf("변수에 저장된 숫자는 %d입니다.", 10);
//printf() 함수의 서식 지정
//변수에 저장된 숫자는 10입니다.
- 이스케이프 시퀀스: 특수문자나 들여쓰기 등을 표현하기 위해 만들어짐
이스케이프 시퀀스 | 출력 내용 |
\' | 작은 따옴표 |
\" | 큰 따옴표 |
\? | 물음표 |
\\ | 백슬래시(\) |
\a | 경고음 발생 |
\b | 백스페이스 |
\n | 줄바꿈(new line) |
\r | 캐리지 리턴(맨 앞으로 이동) |
\t | 수평 탭 |
\v | 수직 탭 |
\f | 폼 피드(현재 페이지 마침 - 다음 페이지로) |
위의 이스케이프 시퀀스 중 \f와 \v는 출력 시에만 의미가 있다.
예시를 살펴보자.
printf("C언어에서 사용하는 \"특수 문자\"에는 여러가지가 있습니다.\n");
printf("\t특수 문자의 바로 앞에는 언제나 \\가 와야 합니다.");
//C언어에서 사용하는 "특수 문자"에는 여러가지가 있습니다.
// 특수 문자의 바로 앞에는 언제나 \가 와야 합니다.
- %d와 같은 서식 지정자는 여러 개를 사용할 수 있다. 다만 순서에 유의해야 한다.
서식 지정자 | 출력 데이터 형태 |
%c | 하나의 문자 |
%s | 문자열 |
%d, %i | 부호가 있는 10진 정수 |
%f | 고정 소수점으로 표현한 실수(소수점 이하 6자리까지) |
%o | 부호 없는 8진 정수 |
%u | 부호 없는 10진 정수 |
%x, %X | 부호 없는 16진 정수 |
%e, %E | 부동 소수점으로 표현한 실수 |
%% | %(퍼센트) 기호 출력 |
예시를 살펴보자
printf("저장된 정수는 %d이며, 저장된 문자열은 %s언어입니다.\n", 123, C);
//저장된 정수는 123이며, 저장된 문자열은 C언어입니다.
📌 scanf() 함수
- C언어에서의 표준 입력함수. 원형은 아래와 같다.
#include <stdio.h>
int scanf(const char * restrict format, ...);
- 데이터를 입력받으려면 입력받고자 하는 데이터의 타입에 해당하는 크기의 메모리를 우선 할당받아야 한다. 이렇게 할당받은 공간을 변수라고 부른다.
- & 주소연산자는 입력받은 데이터를 뒤의 변수에 저장한다.
- printf와 마찬가지로 서식지정자를 여러 개 사용할 수 있다. 입력 구분은 공백으로 한다. 다만 scanf 함수로 double 형 실수를 입력받을 땐 반드시 %lf 서식 지정자를 사용해야 정확한 값을 입력받을 수 있다.
#include <stdio.h>
int main(void)
{
int num01, num02;
printf("두 개의 정수를 입력하세요 : ");
scanf("%d %d", &num01, &num02);
printf("입력하신 두 정수를 8진수로 나타내면 %o와 %o가 되고,\n", num01, num02);
printf("입력하신 두 정수를 16진수로 나타내면 %x와 %x가 됩니다.\n", num01, num02);
return 0;
}
//두 개의 정수를 입력하세요 : 10 20
//입력하신 두 정수를 8진수로 나타내면 12와 24가 되고,
//입력하신 두 정수를 16진수로 나타내면 a와 14가 됩니다.