* 피벗(pivot)은 항상 정렬할 배열 가장 왼쪽을 기준으로 한다.

#include <iostream>
using namespace std;

void QuickSort(int A[], int n);
int Partition(int A[], int n);

int main()
{
    int n;
    cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }
	
    cout << "초기 배열: " ;
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " ";
    }
    cout << "\n";

    QuickSort(arr, n);
	
    cout << "최종 배열: " ;
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " ";
    }
    cout << "\n";
    
    return 0;
}

void QuickSort(int A[], int n) {
    if (n > 1) {
        int pivot = Partition(A, n);

        int* left = new int(pivot);
        for (int i = 0; i < pivot; i++) {
            left[i] = A[i];
        }
        QuickSort(left, pivot);
        for (int i = 0; i < pivot; i++) {
            A[i] = left[i];
        }

        int* right = new int(n-pivot);
        for (int i = 0; i < n-pivot-1; i++) {
            right[i] = A[pivot+i+1];
        }
        QuickSort(right, n-pivot-1);
        for (int i = 0; i < n-pivot-1; i++) {
            A[pivot+i+1] = right[i];
        }
    }
}

int Partition(int A[], int n) {
    int Left = 1, Right = n-1;
    while(Left <= Right) {
        while(Left < n && A[Left] < A[0]) Left++;
        while(Right > 0 && A[Right] >= A[0]) Right--;
        if(Left < Right){
            int temp = A[Left];
            A[Left] = A[Right];
            A[Right] = temp;
        } else {
            int temp = A[0];
            A[0] = A[Right];
            A[Right] = temp;
        }
    }
    return(Right);
}

 

input 

10 50 23 84 49 71 15 99 62 36 7

 

result

초기 배열: 50 23 84 49 71 15 99 62 36 7 
최종 배열: 7 15 23 36 49 50 62 71 84 99

 

연산자(operator)란?

  • 자료에 대해 각종 연산을 수행하게 하는 기호
  • 종류
    산술 연산자 +, -, *, /, %, ++, --
    관계 연산자 >, <, >=, <=, ==, !=
    논리 연산자 &&, ||, !
    대입 연산자 +=, -=, *=, /=, %=, ≪=, ≫=, !=, &=
    조건 연산자 ? :
    비트 연산자 &, |, ^, ~, ≫, ≪
    기타 연산자 sizeof(), cats, &, *

 

산술 연산자

이항 연산자
(binary operator)
+, -, *, / 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈) 16 + 5 (결과: 21)
% 나머지 연산자 16 % 5 (결과: 1)
단항 연산자
(unary operator)
- 부호의 반전 -5
++ 증감 연산자 5++(후위연산), ++5(전위연산)
-- 5-- (후위연산) , --5 (전위연산)
  • 후위연산 : 값을 먼저 사용 후 1 증감
  • 전위연산 : 1 증감 후 값을 사용
  • 예) a=5; i = a++;, j = ++a; (결과 : a는 7, i는 5, j는 7)

 

관계 연산자(relational operator)

== 왼쪽 피연산자와 오른쪽 피연산자가 같으면 1 반환 a == b
!= 왼쪽 피연산자와 오른쪽 피연산자 다르면 1 반환 a != b
>, >=, <=, < 왼쪽 피연산자와 오른쪽 피연산자의 대소 관계를 비교 a >= b
  • 피연산자에 대한 대소 관계 비교
  • 참이면 1, 거짓이면 0 반환

 

논리 연산자(logical operator)

&& 논리곱(AND) : 모두 참이면 1 반환 a && b
|| 논리합(OR) : 둘 중 하나라도 참이면 1 반환 a || b
! 논리부정(NOT) : 논리식 결과가 참이면 0, 거짓이면 1 반환 !a
  • 주어진 논리식을 판단
  • 진리표
    a b a && b a || b !a
    1 (true) 1 (true) 1 (true) 1 (true) 0 (false)
    1 (true) 0 (false) 0 (false) 1 (true) 0 (false)
    0 (false) 1 (true) 0 (false) 1 (true) 1 (true)
    0 (false) 0 (false) 0 (false) 0 (false) 1 (true)

 

비트 연산자(bitwise operator)

& 대응되는 비트가 모두 1이면 1을 반환 (비트 AND 연산) a & b
| 대응되는 비트 중에서 하나라도 1이면 1을 반환 (비트 OR 연산) a | b
^ 대응되는 비트가 서로 다르면 1을 반환 (비트 XOR 연산) a ^ b
~ 비트를 1이면 0으로, 0이면 1로 반전시킴 (비트 NOT 연산) ~a
<< 지정한 수만큼 비트들을 전부 왼쪽으로 이동 (left shift 연산) a << 2
>> 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동 (right shift 연산) a >> 2
  • 수치를 2진수로 변환하여 bit 단위의 연산 수행
  • 비트 시프트(<<, >>) 연산 : 이동 후 빈 공간에는 0이 채워짐

 

대입 연산자(assignment operator)

= 왼쪽의 피연산자에 오른쪽의 피연산자를 대입 a = 5 (기본값)
+= 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입 a += 5 (결과 : a는 10)
-= 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입 a -= 5 (결과 : a는 0)
*= 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입 a *= 5 (결과 : a는 25)
/= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입 a /= 5 (결과 : a는 1)
%= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입 a %= 5 (결과 : a는 0)
&= 왼쪽의 피연산자와 오른쪽의 피연산자에 대해 bit 단위의 AND 연산을 한 후, 그 결괏값을  왼쪽의 피연산자에 대입 a &= 5 (결과 : a는 5)
|= 왼쪽의 피연산자 와 오른쪽의 피연산자에 대해 bit 단위의 OR 연산을 한 후, 그 결괏값을  왼쪽의 피연산자에 대입 a |= 5 (결과 : a는 5)
^= 왼쪽의 피연산자와 오른쪽의 피연산자에 대해 bit 단위의 XOR 연산을 한 후, 그 결괏값을 왼쪽의 피연산자에 대입 a ^ = 5 (결과 : a는 0)
<<= 왼쪽의 피연산자를 오른쪽의 피연산자만큼의 bit 왼쪽으로 이동 후, 그 결괏값을 왼쪽의 피연산자에 대입 a <<= 1 (결과 : a는 10)
>>= 왼쪽의 피연산자를 오른쪽의 피연산자 만큼의 bit 오른쪽으로 이동 후, 그 결괏값을 왼쪽의 피연산자에 대입 a >>= 1 (결과 : a는 2)
  • 연산자의 오른쪽을 왼쪽에 대입
  • 수식을 압축하여 기술 → 프로그램의 길이 축소 및 실행 속도 감소

 

조건 연산자(conditional operator)

  • 형식 : (조건) ? 수식 1 : 수식 2;
  • 조건이 참이면 수식 1 수행, 거짓이면 수식 2 수행
  • 삼항 연산자라고도 함
  • 예) int a = 10; a < 3 ? 1 : 0; (결과 : 0)

 

기타 연산자

sizeof() 지정한 자료형, 수식, 변수가 차지하는 기억공간의 크기(byte)를 구함 sizeof(int) (결과 : 4)
cast(형변환) 지정된 자요형을 다른 자료형으로 강제적으로 바꿈 (float)10/4 (결과 : 2.25)
& 주소 연산자, 피연산자의 주소를 나타냄 &a
* 참조 연산자, 피연산자의 내용을 나타냄 *a
  • 형변환
    1. 자동 형변환
      • 컴파일러에 의해 자동으로 발생하는 형변환
      • 예) int a = 3, b = 4; double c = a / b; (결과 : 0.00000)
      • 위의 예시에서 보면 우선 int형으로 a / b 계산 후의 결괏값을 double형으로 나타낸 것
    2. 강제 형변환
      • cast 연산자를 사용하여 형변환을 명시해서 강제로 변환이 일어나는 것
      • 예) int a = 3, b = 4; double c = (double)a / b; (결과 : 0.00000)
      • 위의 예시에서 보면 우선 a를  double형으로 형변환 한 후  a / b 계산 후의 결괏값을 나타낸 것, 이 때 b는 산술연산 형변환 규칙에 의해 자동으로 double형이 된다.

 

연산자 우선순위

  • 수학과 마찬가지로 C언어에서 제공되는 모든 연산자에는 연산자 우선순위가 정해져있음
  • 즉, 하나의 연산식에 여러 연산자가 사용될 경우 연산자 우선순위에 의해 실행됨
    괄호, 구조체, 공용체 연산자 (), [], ->, . 높음




















    낮음
    단항 연산자 !, ~, ++, --, &, *, sizeof(), cast
    이항연산자 *, /, %
    +, -
    <<, >>
    <<=, >>=
    ==, !=
    &
    ^
    \
    &&
    ||
    조건 연산자 ? :
    대입 연산자 =, +=, *=, ..., &=

참고자료

[도서]

- C 프로그래밍 (저자 김형근, 곽덕훈, 정재화 / 2020 발행)

 

[웹사이트]

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

 

 

 

'C > C' 카테고리의 다른 글

[C언어] 선행처리기(preprocessor)  (0) 2024.12.19
[C언어] 변수(variable)와 자료형(data type)  (0) 2024.12.18
[C언어] 정의 및 구조  (0) 2024.12.17

선행처리기란?

  • 컴파일하기 전에 프로그램 선두에 선언된 지시자들(선행처리 지시문)을 처리하는 역할
    • 실행 파일 만드는 단계 : 선행처리 → 컴파일 → 링킹
  • 즉, 사용자가 정의한 각종 내용(선행처리)을 컴파일러가 컴파일하기 좋게 소스를 재구성해주는 역할
  • 선행처리기의 종류와 기능
    선행처리기 기능
    #include 파일 포함
    #define 매크로 정의
    #undef 정의된 매크로 삭제
    #line __LINE__ 매크로와 __FILE__ 매크로 재정의
    #error 지정한 오류 메세지 출력, 컴파일 과정 중단
    #pragma 운영체제별로 달라지는 지시사항 전달 (프로그램 이식성)
    #if, #else, #elif, #endif 조건부 컴파일
  • 특징 및 사용 시 주의사항
    1. 반드시 #로 시작
    2. 명령문 끝에 세미콜론(;)을 붙이지 않음
    3. 한 줄에 하나의 명령만 작성
    4. 대부분 소스 프로그램의 첫 부분에 위치
    5. 선행처리문이 위치한 곳에서부터 파일의 끝까지에만 영향을 미침

#include

  • 주로 헤더 파일(*.h)을 현재 파일에 포함할 때 사용
  • 형식
    • #include <파일명> : 표준 헤더 파일을 포함할 때 사용
    • #include "파일명" : 사용자가 직접 작성한 헤더 파일을 포함할 때 사용
    • 큰 따옴표를 사용하면 먼저 현재 작업 디렉터리에서 해당 파일을 찾고, 없으면 표준 시스템 디렉터리에서 검색
  • 표준 헤더 파일
    • ctype.h : 문자 검사
    • math.h : 수학 함수
    • stdlib.h : 문자열 변환, 기억공간 할당
    • stdio.h : 표준입출력함수
    • string.h : 문자열 관련
    • time.h : 시간 관련
  • 표준입출력함수 (I/O함수)
    표준출력함수 기능 표준입력함수 기능
    printf() 여러 종류의 자료 출력 scanf() 1개 이상의 자료 입력받음
    putchar() 1개의 문자 출력 getchar() 1개의 문자를 입력받음
    puts() 문자열 출력 gets() 문자열을 입력받음
    1. printf()
      • 양식 지정 출력 함수
      • 형식 : printf("출력 양식", 변수1, 변수2, ...);
      • 출력 양식 변환 기호
        %문자 변환 형식 인자의 자료형
        %c 하나의 문자 char, short int, int
        %s 문자열 char *
        %d 부호 있는 10진 정수 char, short int, int
        %i 부호 있는 10진 정수 (%d와 동일) char, short int, int
        %f 고정 소수점으로 표현한 실수 (소수점 이하 6자리까지 표현) float, double
        %o 부호 없는 8진 정수 unsigned int
        %u 부호 없는 10진 정수 unsigned int
        %x, %X 부호 없는 16진 정수 (소문자, 대문자 사용) unsigned int
        %e, %E 부동 소수점으로 표현한 실수 (e-표기법, E-표기법) float, double
        %g(%G) 값에 따라 %f나 %e(%E)를 사용함. float, double
        %% 퍼센트(%) 기호 출력 -
      • 출력 양식 편집 : %문자에 숫자 또는 - 지정
      • 예)
        코드 결과
        printf(" This is an example \n"); This is an example
        printf("a=%d, b=%c, c=%d \n", 20, 'A', 'A'); a=20, b=A, c=65
        printf("|%-5d| \n", 123); // 총 5자리로 왼쪽부터 채워짐 |  123|
    2. scanf()
      • 양식 지정 입력 함수
      • 형식 : scanf("입력 양식", &변수1, &변수2, ...);
      • 입력 양식에 "%문자"가 아닌 다른 문자를 포함하면 안됨
      • 문자열과 배열명을 제외한 모든 변수 앞에 주소연산자(&) 사용
      • 입력 양식 변환 기호
        %문자 변환 기능
        %c 하나의 문자
        %s 문자열
        %d 10진 정수
        %ld long 정수
        %lld long long 정수
        %f 실수
        %lf double 실수
        %o 8진수
        %x 16진수
      • +) Visual Studio에서는 scanf()가 권장하지 않는 함수이므로 도입부에 '#pragma warning(disable:4996)' 추가
    3. putchar()
      • 문자 단위의 출력 함수
      • 형식 : putchar(문자);
      • 괄호 안에 인자(문자) :  정수형 변수, 정수형 상수, 문자형 변수, 문자 및 수식
      • 예) putchar('A'); putchar('A'+1); // 결과 : AB
    4. getchar()
      • 문자 단위의 입력 함수
      • 형식 : getchar();
      • 문자가 저장되는 변수는 정수형이나 문자형
      • 괄호 안에 인자를 지정하지 않음
      • 예) char a; a = getchar();
    5. puts()
      • 문자열 단위의 출력 함수
      • 형식 : puts(변수);
      • 문자열 출력 후 자동 줄바꿈 (문자열 끝인 null 문자('\0')를 만나면 '\n'으로 출력)
      • printf()는 자동 줄바꿈이 적용되지 않음
      • 예) char s[] = "seoul"; puts(s); // 결과 : seoul
    6. gets()
      • 문자열 단위의 입력 함수
      • 형식 : gets(변수);
      • 변수는 배열명이나 포인트 변수여야 함
      • 엔터 키를 누르면 null 문자('\0')가 입력되어 문자열의 끝을 나타냄
      • 예) char s[50]; gets(s);

#define

  • 매크로를 정의할 때 사용
    • 매크로 : 자주 사용되는 함수나 명령, 수식 또는 상수에 이름을 붙여 간단하게 사용할 수 있게 하는 것 (가독성 증가)
  • 매크로 상수
    • 형식 : #define 매크로명 자료
    • 매크로명은 식별자(identifier)라고도 하며, 프로그램내의 식별자를 자료로 치환하는 것 (매크로 확장;macro expansion)
    • 단, 문자열에 포함된 매크로는 치환 작업이 이루어지지 않음
    • 해제 : #undef 매크로명
  • 매크로 함수
    • 매크로를 사용하여 정의한 함수
    • 선행처리기에 의한 단순 치환 방식
    • 형식 : #define 매크로명(인수) (수식)
    • 인수는 여러 개일 수 있다.
    • 장점
      1. 전달 인자의 자료형을 명시할 필요가 없음
      2. 어떠한 자료형 변수라도 인자로 전달 가능
      3. 그냥 함수보다 속도가 빠름
  • 매크로 사용 시 주의할 점
    1. 매크로명은 대문자 사용
    2. 매크로 정의문 끝에는 세미콜론(;)을 사용하지 않음
    3. 문자열이 한 줄을 넘어설 때는 \ 사용
    4. 매크로 정의를 해제할 때(#undef)는 매크로명만 기입
  • 예)
#define PI 3.141592 // 객체같은 매크로 (object-like macro)

#define STR "실습\
예제"

#undef PI

참고자료

[도서]

- C 프로그래밍 (저자 김형근, 곽덕훈, 정재화 / 2020 발행)

 

[웹사이트]

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

 

'C > C' 카테고리의 다른 글

[C언어] 연산자(operator)  (0) 2024.12.26
[C언어] 변수(variable)와 자료형(data type)  (0) 2024.12.18
[C언어] 정의 및 구조  (0) 2024.12.17

변수(variable)

  • 데이터를 저장할 수 있는 메모리 공간
  • 프로그램 실행 도중 변할 수 있는 값이 저장되는 기억공간 (상수와 반대)
  • 특징
    • 모든 변수는 이름이 있음 (변수명)
    • 모든 변수는 정해진 자료형이 있음
    • 모든 변수는 할당된 값을 갖음
  • 규칙
    1. 사용되기 전에 선언되어 있어야 함
    2. 첫 문자 : 반드시 영문자 or 밑줄(_)
    3. 중간에 숫자, 밑줄(_) 사용 가능
    4. 밑줄 이외의 특수문자 사용 불가능
    5. 예약어 사용 불가능
    6. 대소문자 구분
  • 전역변수
    • 함수 외부에서 선언된 변수    프로그램 어디에서나 사용 가능
    • 항상 존재하는 자료 영역에 저장됨
    • 0으로 자동으로 초기화 됨
  • 지역변수
    • 함수 내부에서 선언된 변수 → 함수 내부에서만 사용 가능
    • 임시 기억공간인 스택 영역에 저장됨
    • 함수의 실행이 끝나면 소멸됨
    • 자동으로 초기화되지 않음

상수(constant)

  • 데이터를 저장할 수 있는 메모리 공간
  • 항상 고정된 값을 갖는 자료, 즉 한 번 지정된 값은 변경할 수 없는 수
  • 리터럴 상수(literal constant)
    • 글자 그대로의 의미가 있는 상수 (이름 없음)
    • 정수형 상수 
      구분 비고
      10진 상수 10, -10, 999 0~9의 숫자
      8진 상수 011, 055 0~7의 숫자, 숫자 앞에 0
      16진 상수 0xac, 0X2A 0~9의 숫자 + A~F의 문자, 숫자 앞에 0x
      unsigned형 상수 12u, 067u 부호 없는 상수, 숫자 뒤에 U or u
      long형 상수 123456l, 0XFFL 큰 길이의 정수, 숫자 뒤에 l or L
    • 실수형 상수
      구분 비고
       소수 형식  12.345, .5 소수점 사용
       지수 형식 12E3(=12000), 5e-2(=0.05)  10진수 + e(E)
       float형 상수  3.14f, 3.14F 숫자 뒤에 f or F
       long double형 상수 (기본값)  3.14l, 3.14L 숫자 뒤에 l or L
    • 문자형 상수
      • 단일 인용부호('')로 묶여 있는 1개의 영문자나 숫자문자
      • ASCII 코드값 사용
      • 예) 'A' == 65
      • escape 문자 : 키보드에 나타나 있지 않은 문자
        escape 문자 기능
        \a 경고음(alert) 출력
        \b 백스페이스(back space)
        \f 새 페이지(form feed)
        \n 출력 시 줄 바꿈(new line)
        \r 커서를 행의 시작 위치로 이동(carrige return)
        \t 수평 탭(horizontal tab)
        \0 ASCII 코드값이 0인 문자(null 문자)
    • 문자열 상수
      • 이중 인용부호("")로 묶여 있는 복수 개의 영문자와 숫자로 이루어진 상수
      • 기억공간에는 문자열 끝에 null 문자('\0')이 추가되어 보관됨
    • 예) 123 (정수형 상수), 3.14 (실수형 상수), 'a' (문자형 상수), "SEOUL KOREA" (문자열 상수)
  • 심볼릭 상수(symbolic constant)
    • 데이터를 기호화하여 변수처럼 사용하는 상수 (이름 있음)
    • 반드시 선언과 동시에 초기화가 되어야 함
    • const 키워드 사용 / 매크로 이용
    • 예) const int MAX = 10; (const), #define MAX 10; (선행처리기를 이용한 매크로)

자료형(data type)

  • 사용하는 자료의 형태
  • 컴파일러가 기억공간을 마련하는 데사용하느 자료의 종류나 크기 등의 특징을 나타냄
    기본형 정수형 (integer type) int, short, long, unsigned
    실수형 (floating-point type) float, double, long double
    문자형 (character type) char, unsigned char
    열거형 (enumerated type) enum
    형 없음 void
    확장형 배열형 (array type)
    함수형 (function type)
    포인터형 (pointer type)
    구조체형 (structure type)
  • 정수형
    • 기본형: int
    • 반드시 사용하고자 하는 데이터의 크기를 고려해야 함 - 언더플로우(underflow), 오버플로우(overflow) 발생 방지
    • 크기에 따라 'short', 'long' / 부호에 따라 'signed', 'unsigned' 붙일 수 있음
      정수형 타입 크기 범위
      (signed) short 2 바이트 -32,768 ~ 32,767
      unsigned short 2 바이트 0 ~ 65,535
      (signed) int 4 바이트 -2,147,483,648 ~ 2,147,483,647
      unsigned int 4 바이트 0 ~ 4,294,967,296
      (signed) long 4 바이트 -2,147,483,648 ~ 2,147,483,647
      unsigned long 4 바이트 0 ~ 4,294,967,296
      (signed) long long 8바이트 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
      unsigned long long 8바이트 0 ~ 18,446,744,073,709,551,615
  • 실수형
    • 기본형: double
    • 부동 소수점 표현 방법(실수와 소수점을 2진수로 표현) 사용 - IEEE 754 규약
      실수형 타입 크기 범위
      float 4 바이트 (3.4 X 10의 -38제곱) ~ (3.4 X 10의 38제곱)
      double 8 바이트 (1.7 X 10의 -308제곱) ~ (1.7 X 10의 308제곱)
      long double 8 바이트 (1.7 X 10의 -308제곱) ~ (1.7 X 10의 308제곱)
  • 문자형
    • 기본형: char
      문자형 타입 크기 범위
      (signed) char 1 바이트 -128 ~ 127
      unsigned char 2 바이트 0 ~ 255
    • 문자 하나를 표현하는 자료형
    • ASCII 코드 사용
      • 대문자 A~Z : 65~90
      • 소문자 a~z : 97~122
      • 숫자 0~9 : 48~57
    • 예) Korea 저장 방식
      K o r e a \0
      75 111 114 101 97 0
  • 열거형
    • 키워드 : enum
    • 형식 : enum 태그명 {열거자 1, 열거자 2, ...}
    • 변수가 가질 수 있는 값을 나열해 놓은 것
    • 열거자는 int형 상수
    • 열거자의 기본값 : 첫번째는 0, 이후부터는 이전 원소의 값 +1
    • 예) enum day {SUN, MON, TUE, WED, THU, FRI,SAT}; enum day d1, d2; (enum day형인 변수)

변수의 선언과 초기화

  • 변수 선언 : 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당하는 것
    • 변수 선언 형식 : 자료형 변수명;
    • 예) int 변수명; float 변수명;
  • 변수 초기화 : 선언된 변수에 특정 값을 부여하는 것
    • C언어에서는 변수가 초기화되지 않으면 에러가 발생할 수 있음
    • 초기화되지 않은 변수에는 기억공간에 존재하고 있던 기존의 값(쓰레기값)이 있기 때문이다.
    • 예) 변수명 = 데이터값;
  • 변수 선언과 초기화를 동시에 하는 방법
    • 변수는 선언과 초기화를 동시에 할 수 있음
    • 선언하고자 하는 변수들의 타입이 같다면 여러 변수를 동시에 선언 및 초기화 가능
      구분 여러 변수 선언 여러 변수 선언 및 초기화
      형식 자료형 변수명[, 변수이름]; 자료형 변수명 = 초기값[, 변수명 = 초기값];
      예시 int num01, num02; double num03 = 1.23, num04 = 4.56; 

참고자료

[도서]

- C 프로그래밍 (저자 김형근, 곽덕훈, 정재화 / 2020 발행)

 

[웹사이트]

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

 

 

'C > C' 카테고리의 다른 글

[C언어] 연산자(operator)  (0) 2024.12.26
[C언어] 선행처리기(preprocessor)  (0) 2024.12.19
[C언어] 정의 및 구조  (0) 2024.12.17

C언어란?

  • 프로그래밍 언어 (인간과 컴퓨터가 소통할 수 있는 언어)
  • 특징
    1. 고급 언어
    2. 대소문자 구분
    3. 프로그램 이식성 높음
    4. 하드웨어 제어 가능 (저급 언어의 특성)
    5. 절차 지향 프로그래밍 언어
    6. 선행처리기를 제외한 명령어 끝에는 반드시 세미콜론(;) 사용

* C 프로그램 빌드 과정은 아래 링크의 C++ 프로그램 빌드 과정과 같다.

 

[C++] 소스 파일 및 프로그램 빌드

C++ 소스 파일 (C++ Source File) C++ 소스 파일C++ 명령어로 작성된 파일'.cpp', '.cxx', '.C' 등의 확장자 사용C++ 헤더 파일 (C++ header file)전역변수, 함수의 원형과 같은 공통 부분을 별도로 작성한 파일(중

hya68.tistory.com

 

C 프로그램의 구조

 

C 프로그램의 구성 요소

  • 예약어(reserved word)
    • 미리 정의되어 있는 의미 있는 단어
    • 예) int, char, static, if~else, for, main, ...
  • 명칭(identifier)
    • 예약어를 제외한 이름을 나타내는 문자열
    • 예) 변수명, 매크로명, 자료형 이름, 함수명 등
    • 규칙
      1. 영문자+숫자 조합
      2. 첫 문자: 영문자 or 밑줄(_)
      3. 밑줄을 제외한 특수문자 사용 불가능
      4. 문자 사이에 공백이 없어야 함
      5. 예약어 사용 불가능
      6. 대소문자 구별하여 사용
  • 상수(constant)
    • 한 번 정해지면 변경할 수 없는 값
    • 예) 정수형 상수, 실수형 상수, 문자형 상수, 문자열 상수
  • 연산자(operator)
    • 임의의 자료에 대해 각종 연산을 수행하게 하는 기호
    • 예) 산술 연산자(+,-,++,--,...), 관계 연산자(==,!=,<,>=,...), 논리 연산자(&&, ||, !), 대입 연산자(=, +=, <<=, ...) 등
  • 설명문(주석/comment)
    • 컴파일러가 번역하지 않는 문장을 나타낼 때 사용
    • 위치, 길이 상관없음
    • 프로젝트 시 주로 사용 용도 및 개발자의 의도를 표시하기 위해 사용
    • 한줄 : //
    • 여러줄 : /* */

'C > C' 카테고리의 다른 글

[C언어] 연산자(operator)  (0) 2024.12.26
[C언어] 선행처리기(preprocessor)  (0) 2024.12.19
[C언어] 변수(variable)와 자료형(data type)  (0) 2024.12.18

+ Recent posts