예약어와 식별자
1. 예약어
1) 예약어: 문법적으로 고유한 의미를 갖는 예약된 단어
- 이 단어들은 다른 용도(변수 등)로 사용해서는 안 됨
- 키워드(keyword)라고도 부름
- C에서 사용되는 기본 키워드로 문법적인 고유한 의미가 있다
auto | do | goto | signed | unsigned |
break | double | if | sizeof | void |
case | else | int | static | volatile |
char | enum | long | struct | while |
const | float | return | typedef | |
default | for | short | union |
: 프로그래밍 언어를 학습한다는 것은 이러한 예약어를 사용한다는 뜻
2. 식별자(identifiers)
1) 식별자
: 프로그래머가 스스로 선정(정의)해 사용하는 단어
- 변수명, 함수명 등으로 사용
1) 식별자 제한 조건
- 대소문자 모두 구별
- 변수 Count, count, COUNT는 모두 다른 변수이다
- 키워드는 식별자로 이용 불가능
- 키워드와 비교해 철자, 대문자, 소문자 등 무엇이라도 달라야 함
2) 식별자 구성
- 영문자(대소문자 알파벳), 숫자(0~9), 밑줄(_)로 구성
- 첫글자는 숫자가 될 수 없다
- 프로그램 내부의 영역에서 서로 구별되어야 함: 소스파일, 함수 또는 블록
- 식별자의 중간에 공백(space)문자 삽입 불가
3. 문장과 블록
1) 문장(statement)
- 프로그래밍 언어에서 컴퓨터에게 명령을 내리는 최소 단위
- 문장은 마지막에 세미콜론;으로 종료
2) 블록(block)
- 여러 개의 문장을 묶으면 블록(block)이 됨
- 중괄호(curly brace)로 열고 닫음 {...}
3) 들여쓰기(indentation)
- 블록 내부에서 문장들을 탭(tab)키로 한 스텝만큼 오른쪽으로 들여 쓰는 소스 작성
int main(void)
{
puts("puts()는 한 줄에 문자열 출력함수"); // 한 줄 출력을 자동으로
...
printf("printf() 함수 호출");
...
puts("자바"); puts("C#"); // 프로그램 이해에 도움이 된다면 한 줄에 여러 문장 입력도 가능
return 0;
}
=> 블록을 시작하는 중괄호 { 다음에 탭 정도만큼 오른쪽으로 들여 쓴다
=> 블록 종료 표시인 중괄호 }는 다시 원위치에 작성
4. 주석
1) 주석: 일반 문장과 달리 프로그램 내용에 영향을 미치지 않는 설명문
- 한 줄 주석 //
- 블록 주석 /*...*/
- 비주얼 스튜디오에서 주석은 모두 초록색으로 표시
5. 실습 예제
1) 실습
: 키워드와 식별자, 주석 등을 이해하기 위한 프로젝트
- 솔루션: ch03
- 프로젝트: Prj01
- 소스파일: 01comments.c
2) 소스
자료형과 분류
1. 자료형(data type)
- 비슷한 자료의 묶음 표현 ex. 포유류, 어류, 양서류
- 프로그래밍 언어에서 자료를 식별하는 종류
2. 분류
- 기본형(basic types) ex. 정수형, 실수형, 문자형, void
- 유도형(derived types)
- 사용자 정의형(user defined types)
3. 자료형 키워드
자료형 | 기본 자료형 | 정수형 | short |
int | |||
long | |||
실수형 | float | ||
double | |||
문자형 | char | ||
무치형 | void | ||
유도 자료형 | |||
사용자 정의 자료형 |
변수와 자료형
1. 변수 선언
1) 컴파일러에게 알림
- 프로그램에서 사용할 저장 공간인 변수를 알리는 역할
2) 프로그래머 자신에게 알림
- 선언한 변수를 사용하겠다는 약속의 의미
3) 주의점
- 변수는 관습적으로 소문자 사용
- 하나의 문장으로 세미콜론으로 종료
- 변수 선언 이후 지정한 변수이름으로 값을 저장하거나 값을 참조
4) 변수 선언
- 컴파일러는 실제 변수선언 문장에 맞는 저장 영역을 메모리에 확보
- 함수에서 변수의 이름은 반드시 서로 구별
5) 변수에 값 대입
: 메모리에 int 자료형을 저장할 수 있는 공간을 age라는 이름으로 확보
: 이름이 age인 저장공간에 자료값 정수 20을 저장하는 문장
* 대입연산자인 =는 오른쪽 값을 왼쪽 변수에 '대입하라'라는 '<-'의 의미가 있다
=> 한 문장으로 가능
=> int age =20;
2. 정수형 int
1) int
- 기본 키워드
- 10진수 표현: 365, 1024
- 8진수 표현: 030, 16진수 표현: 0xF3 (0~9, a~9까지 사용)
2) short / long
- 정수형 int에서 파생된 자료형
3) signed / unsigned
- signed 자료형: 음수, 0, 양수를 모두 지원
- 사용하지 않으면 signed 의미
- unsighed: 0과 양수만을 지원
4) 정수형 int로 만들 수 있는 자료형
- int > [signed] int / unsigned int
- short -> [signed] short [int] / unsigned short [int]
- long -> [signed] long [int] / unsigned long [int]
3. 부동소수형 변수의 선언과 활용
1) 키워드: float, double, long double
- double형은 float형보다 표현범위가 같거나 보다 정확
- long double형은 double형보다 표현범위가 같거나 보다 정확
2) 비주얼 스튜디오에서의 저장공간 크기
- float: 4바이트
- double: 8바이트
- long double: 8바이트
3) 실습예제
- f는 소수점 6자리 출력
4. 문자형 자료형 char
- char, signed char, unsigned char
- 저장공간 크기는 모두 1바이트
- 키워드 signed와 unsigned를 함께 사용 가능
ex. 문자형 char c1 = 'a';
char c1 = 'a'; | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1바이트 |
: 문자 'a'의 코드값인 2진수 01100001이 저장됨
상수(constant)
1. 상수의 종류
1) 리터럴 상수(literal constant)
: 이름 없이 있는 그대로 표현한 자료값
2) 심볼릭 상수(symbolic constant)
: 이름이 있으나 정해진 하나의 값만으로 사용되는 자료값
- const 상수(const constant)
- 매크로 상수(macro constant)
- 열거형 상수(enumeration constant)
구분 | 표현방법 | 설명 | 예 |
리터럴 상수 (이름이 없는 상수) |
정수형 실수형 문자 문자열 상수 |
다양한 상수를 있는 그대로 기술 | 32, 025, 0xf3, 10u, 100L, 30LL, 3.2F, 3.15E3 'A', '\n', '\0', '\24', '\x2f' "C 언어", "프로그래밍 언어\n" |
심볼릭 상수 (이름이 있는 상수) |
const 상수 | 키워드 const를 이용한 변수 선언과 같으며, 수정할 수 없는 변수 이름으로 상수 정의 | const double PI = 3.141592; |
매크로 상수 | 전처리기 명령어 #define으로 다양한 형태를 정의 | #define PI 3.141592 | |
열거형 상수 | 정수 상수 목록 정의 | enum bool {FALSE, TRUE}; |
2. 열거형 상수
1) 키워드 enum
2) 정수형 상수 목록 집합을 정의하는 자료형
- 목록 첫 상수의 기본값: 0
-> 다음부터 1씩 증가하는 방식으로 상수값이 자동으로 부여
- 상수값을 특정한 값으로 지정 가능 ex. TRI=3
- 따로 지정되지 않은 첫 번째 상수는 0
- 중간 상수는 앞의 상수보다 1씩 증가한 상수값으로 정의
3) 예시1
enum SHAPE {POINT, LINE, TRI=3, RECT, OCTA=8, CIRCLE};
- 중괄호 활용
- 문장이라 세미콜론; 사용
POINT | 0 | LINE | 1 | TRI | 3 | RECT | 4 | OCTA | 8 | CIRCLE | 9 |
- 맨 왼쪽 POINT는 아무것도 쓰지 않은 상수이므로 0이 됨
- TRI는 3으로 정의했으므로 3이 됨
4) 예제2
전처리
1. 전처리
1) 전처리기의 역할
- 컴파일(compile) 전, 전처리기(processor)의 전처리(preprocess) 과정 필요
- C 언어에만 있는 독특한 방식
2) 컴파일 이전에 하는 작업
- 전처리 이후 전처리기가 생성한 소스를 컴파일
- 전처리 지시자인 #include로 헤더파일을 삽입
- #define에 의해 정의된 상수를 대체
3) 전처리 지시자(preprocess directivies)
- 전처리 과정에서 처리되는 문장
- #으로 시작
2. 전처리 지시자 #include
1) #include <헤더파일>
: 헤더파일 삽입
- 대표적인 헤더파일: <stdio.h>
- puts(), printf(), scanf(), putchar(), getchar() 등과 같은 입출력 함수의 정보 정의
2) 표준 C 라이브러리
: 개발환경을 설치하면 이러한 시스템 헤더파일이 특정 폴더에 설치되고
필요한 경우 편집기로 열어볼 수 있다
3) 주요 헤더파일
헤더파일 | 파일 이름 | 파일 내용 |
stdio.h | STanDard Input Output(표준 입출력) | 표준 입출력 함수와 상수 |
stdlib.h | STanDard LIBrary(표준 함수) | 주요 메모리 할당 함수와 상수 |
math.h | math | 수학 관련 함수와 상수 |
string.h | string | 문자열 관련 함수와 상수 |
time.h | time | 시간 관련 함수와 상수 |
ctype.h | Character TYPE | 문자 관련 함수와 상수 |
limits.h | limits | 정수 상수 등 여러 상수 |
float.h | float | 부동소수에 관련된 각종 상수 |
=> #include <stdio.h>를 삽입하면 printf() 함수를 사용할 수 있다
3. 전처리 지시자 #define
1) 매크로 상수(macro constant)를 정의하는 지시자
- 전처리 지시자: #define
- 심볼릭 상수는 주로 대문자 이름으로 정의
2) 기능
- 소스에서 정의된 매크로 상수를 모두 #define 지시자에서 정의된 문자열로 대체(replace)
- 소스가 간결하고 수정이 용이
입출력
1. 출력함수 printf() 개요
1) printf()
- 대표적인 표준출력 함수
- 명령 프롬프트 콘솔(console)에 다양한 변수와 상수를 출력하는 함수
- %로 시작하는 일련의 문자 및 값으로 서식을 지정
- printf("형식문자열", 출력목록1, 출력목록2, ...)
- 첫 번째 인자인 형식문자열(format string)
- 일반 문자, 이스케이프 문자, 형식지정자(format specification)로 구성
- %d, %s와 같이 %f로 시작하는 형식지정자는 출력하려는 값의 위치에 배치
2) 출력함수 printf()의 다양한 형식지정자
- 형식지정자는 출력 내용의 자료형에 따라 %로 시작
- %d, %i, %c, %c
- 형식지정자 형식에 맞게 콘솔로 출력할 값이 표시
- 형식지정자는 출력값의 목록과 순서대로 서로 일치해야 함
ex. printf("%d %i %f %s \n", 3, 16, 3.4, "hello");
3) 예제
- %8..2f: 전체 width를 8로 하고 소수점 둘째자리까지 출력
- %10.4f: 전체 width를 10으로 하고 소수 넷째자리까지 출력
2. 입력함수 scanf()
1) scanf()
- 대표적인 표준입력 함수
- %d, %c, %lf 등의 형식 지정자 사용
- '&변수이름'으로 사용
2) &변수이름
- 반드시 변수 앞에 주소를 의미하는 &를 붙임
- 입력값이 저장되는 변수의 주소 위치를 찾는다는 의미
ex.
scanf("%d, %f, %lf", &point, &value, &data);
3. 실습예제
- scanf() 함수는 입력창에서 값을 입력한 후 반드시 ENTER키를 눌러야 프로그램이 진행
- 두 개 이상의 값을 입력받을 때는 스페이스 또는 ENTER키로 구분해 입력한 후 ENTER키를 눌러야 프로그램 진행
4. 실수와 다양한 자료형의 입력
1) 제어문자 %f, %lf, %c
- printf()에서 실수의 출력을 위한 형식 지정자
- %f와 %lf를 모두 사용
2) 입력 scanf()
- 저장될 자료형이 float이면 %f 사용
- double이면 %lf로 구분해서 사용
- int(정수): %d
- char(문자): %c
- 문자열: %s
* 변수(variables)는 메모리의 임시저장소이다
* 변수의 값 범주를 대표하는 자료형(data types)
* 전처리(preprocessor)는 C 언어만의 독특한 구조이다
* printf()와 scanf()는 C 언어의 대표적인 입출력 함수이다
'AI > 컴퓨터C프로그래밍' 카테고리의 다른 글
컴퓨터C프로그래밍 04 연산자와 조건 (0) | 2025.10.06 |
---|---|
컴퓨터C프로그래밍 02 C 프로그래밍 첫걸음 (0) | 2025.10.06 |
컴퓨터C프로그래밍 01 C 언어 개요와 개발환경 설치 (0) | 2025.10.05 |
컴퓨터C프로그래밍 00 C 언어 개발환경 설치 (0) | 2025.10.05 |