본문 바로가기
C/C 문법

혼자 공부하는 C언어 (1~2강)

by Sein_ 2025. 9. 1.
728x90
1. C언어에 대하여
2. 상수와 데이터 출력
3. 데이터의 컴파일 형태

 

C언어에 대하여

  • 역사
    • 1972년 데니스 리치와 켄 톰슨이 유닉스 시스템에 사용하기 위해 개발
    • 장점
      1. 운영체제 개발을 목적으로 만들어 하드웨어를 제어하는 시스템 프로그래밍이 가능
      2. 기종이 다른 컴퓨터에서도 사용이 가능한 프로그램 (이식성)
      3. 함수를 사용하여 기능별로 프로그래밍이 가능
  • 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
    • 제어문자
      • 제어문자란?
        • 출력 방식에 영향을 주는 문자로 백슬래시(\)와 함께 사용
      • 제어문자의 종류
        \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)
    • 실수 상수
      • 지수 표기법
        • 소수점 자릿수가 긴 실수를 표현할 때 유용
        • 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

 

  • 상수의 비트 변환 
    • 정수 양수
      1. 10진수 값을 2진수로 변환
      2. 좌측 빈자리(상위 비트)를 0으로 채움
    • 정수 음수
      1. 10진수 절댓값을 2진수로 변환
      2. 각 비트를 보수 처리(0과 1 반전)
      3. 여기에 +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