728x90
1. C언어에 대하여
2. 상수와 데이터 출력
3. 데이터의 컴파일 형태
C언어에 대하여
- 역사
- 1972년 데니스 리치와 켄 톰슨이 유닉스 시스템에 사용하기 위해 개발
- 장점
- 운영체제 개발을 목적으로 만들어 하드웨어를 제어하는 시스템 프로그래밍이 가능
- 기종이 다른 컴퓨터에서도 사용이 가능한 프로그램 (이식성)
- 함수를 사용하여 기능별로 프로그래밍이 가능
- C언어의 컴파일 과정
- 컴파일: 소스파일을 기계어로 바꾸는 과정
- 컴파일러: 컴파일을 수행하는 프로그램 (ex. : Visual Studio MSVC , Java: Oracle javac, ...)
- 소스파일 -> [전처리_소스파일 가공] -> 전처리된 소스파일 -> [컴파일_기계어 변환] -> 개체파일 -> [링크_startup code 결합] -> 실행파일
- 전처리: #include, #define 등 전처리 지시자를 확인하여, 프로그램에 맞게 코드를 변경하거나 삽입하는 단계 (ex) #include <stdio.h> → stdio.h의 실제 코드로 삽입됨
- 컴파일: CPU가 해석할 수 있는 기계어 파일로 변환하는 작업
- 링크: 설치된 운영체제가 인식할 수 있게 개체파일에 startup code를 결합하는 과정
- startup code: 프로그램을 실행하기 전 필요한 준비작업을 수행하며 main함수를 호출하는 코드
- Visual Studio 는 IDE(통합 개발 환경) 는 컴파일러 중 하나이다?
- Visual Studio를 설치하면 내부적으로 MSVC 컴파일러가 함께 설치됩니다.
- 사용자는 Visual Studio에서 C/C++ 프로젝트를 빌드할 때 자동으로 MSVC를 통해 컴파일하게 됩니다.
- 정확히 말하면 MSVC로 컴파일하는 것
- 주석
- 소스코드를 설명하는 내용을 담는다.
- 전처리 단계에서 모두 제거되므로 컴파일러가 번역하지 않는다.
- // : 행당 줄 끝까지 주석 처리
- /* */ : /* 와 */ 사이의 모든 내용을 주석 처리
상수와 데이터 출력
- 데이터 출력
- #include <stdio.h>
- standard input output 표준 입출력 함수들이 들어 있는 헤더 파일 stdio.h를 포함하는 전처리 지시문
- printf("출력할 내용");
- 데이터를 화면에 문자열을 출력하는 함수
- 정수와 실수 출력
- 숫자 출력시 변환문자를 이용해 문자열로 변환 필요
- 변환문자
- 문자/문자열
%c 문자 1개 출력 char 'A' → A %s 문자열 출력 (널 문자까지) char[], char* "Hello" → Hello - 정수
%d 10진수 정수 출력 (부호 있음) int 42, -7 %o 8진수 출력 int, unsigned int 075 %x 16진수 (소문자) int, unsigned int 1a3f %X 16진수 (대문자) int, unsigned int 1A3F - 실수
%lf 고정 소수점 형식 출력 double 3.141593 %e 지수 표현 (소문자 e) float, double 3.141593e+00 %E 지수 표현 (대문자 E) float, double 3.141593E+00 %.n 소수점 이하 n자리까지 출력 float, double %.2f → 3.14
- 문자/문자열
- #include <stdio.h>
-
- 제어문자
- 제어문자란?
- 출력 방식에 영향을 주는 문자로 백슬래시(\)와 함께 사용
- 제어문자의 종류
\n New Line 줄 바꿈 (개행) \t Horizontal Tab 수평 탭 (일반적인 탭 간격 이동) \r Carriage Return 커서를 줄 맨 앞으로 이동 \b Backspace 커서를 한 칸 뒤로 이동 \\ Backslash 역슬래시 자체 출력 \' Single Quote 작은따옴표 출력 \" Double Quote 큰따옴표 출력 \? Question Mark 물음표 출력 (?? 와 충돌 방지용) \0 Null Character 널 문자 (문자열 종료 의미) \a Alert (Bell) 경고음 또는 알림 (벨소리)
- 제어문자란?
- 제어문자
- 데이터의 표현
- 정수 상수
- 10진수
- 단위 숫자로 0~9까지 10개 단위 숫자 사용 (ex. 22)
- 8진수
- 0~7까지 8개 단위 숫자 사용하며 숫자 앞에 0을 붙여 구분 (ex. 075)
- 16진수
- 0~F까지 영문자 포함 15개 단위 숫자 사용하며 숫자 앞에 0x를 붙여 구분 (ex. 1A3F)
- 10진수
- 실수 상수
- 지수 표기법
- 소수점 자릿수가 긴 실수를 표현할 때 유용
- e는 밑수 10을 의미하며 대문자로 사용 가능 (ex. 1.230000e-10)
- 지수 표기법
- 정수 상수
double x = 0.000000000123;
printf("%f\n", x); // 0.000000
printf("%e\n", x); // 1.230000e-10
데이터의 컴파일 형태
컴파일 시, 코드들은 2진수 형태인 아스키 코드 값으로 변역된다.
- 아스키 코드란?
- 사람이 사용하는 기호를 컴퓨터 안에서 표현하는 방법
- 컴퓨터에서 필요한 128개의 문자를 코드화 (영문 대/소문자, 숫자, 특수문자, 제어문자 등)
- 데이터 단위
- bit (비트): 데이터의 최소 단위, 0 또는 1
- byte (바이트): 1byte = 8bit, 컴퓨터에서 가장 기본적인 저장 단위
- 기본 자료형 정보
| 자료형 | 크기 (byte) | 비트 수 (bit) | 설명 | 예시 값 | 출력 변환문자 |
| int | 4byte | 32bit | 기본 정수형, 부호 있음 | 100, -42 | %d |
| double | 8byte | 64bit | 배정도 실수, 소수 약 15자리 | 3.1415926 | %lf 또는 %f |
| char | 1byte | 8bit | 문자 1개 저장, 부호 있음 | 'A', 65 | %c |
| char[] | nbyte | 8bit×n | 문자열 (문자 배열, 널 문자 종료) | "Hello" | %s |
- 상수의 비트 변환
- 정수 양수
- 10진수 값을 2진수로 변환
- 좌측 빈자리(상위 비트)를 0으로 채움
- 정수 음수
- 10진수 절댓값을 2진수로 변환
- 각 비트를 보수 처리(0과 1 반전)
- 여기에 +1을 더함
- 정수 양수
- 실수의 비트 형태 (double 형식)
- 실수는 부호비트(1bit) / 지수부(11bit) / 소수부(52bit) 로 이루어진다.
- 부호비트로 양수는 0, 음수는 1 표시
- 오차 발생 가능 (double 형의 경우 15자리까지 유효 숫자 사용 가능)
'C > C 문법' 카테고리의 다른 글
| 혼자 공부하는 C언어 (11~12강) (1) | 2025.09.07 |
|---|---|
| 혼자 공부하는 C언어 (9~10강) (0) | 2025.09.06 |
| 혼자 공부하는 C언어 (7~8강) (0) | 2025.09.05 |
| 혼자 공부하는 C언어 (5~6강) (0) | 2025.09.03 |
| 혼자 공부하는 C언어 (3~4강) (1) | 2025.09.02 |