자료형과 자료형 변환 연산자

문성원·2024년 1월 4일
0

1) 목표

  • 자료형과 자료형 변환 연산자에 대해서 익혀보자
  • 자료형 캐스팅을 할 때 주의 사항과 형식 지정자를 어떻게 지정하는 지 익혀보자

2) 소스코드

// Example01.cpp 
// 자료형과 자료형 변환 연산자

#include "pch.h"
#include <stdio.h>

int main()
{
    char a;         // 1바이트, signed char
    short b;        // 2바이트, signed short int
    long long c;    // 4바이트, signed long int
    // long long d; // 8바이트, signed long long int
    short d;

    (int)a;         // 형 변환 연산자 -> 자료형 크기를 일시적으로 변환
    a = (char)256;
    b = 'a';
    c = (long long)2147483648 + 2147483648; // 0 ~ 4294967295
    d = 0x1284;
    a = (char)d;
    // d = 189.2;

    printf("%d\n", a);
    printf("%c\n", b);
    // printf("%lu\n", c);
    printf("%lld\n", c); // 8바이트 printf("%lld\n",d);
    //printf("%d\n", c); // 4바이트 printf("%d\n",d);
    //printf("%hd\n", c); // 2바이트 printf("%hd\n",d);
    //printf("%hhd\n", c); // 1바이트 printf("%hhd\n",d);

    printf("0x%hhx\n", d);
    printf("0x%llx\n", c);

    printf("0x%hhx\n", a);

    return 0;
}

3) 이해한 내용 정리

  • 변수 앞에 (자료형)을 넣어주게 되면 일지적으로 해당 변수를 이 자료형으로 선언하겠다는 의미
  • 위 변수들을 출력할 때 넣는 형식 지정자는 각 변수의 자료형의 크기에 따라 다른데
// 16바이트 정수형
printf("%lld\n", a)
// 8바이트 정수형
printf("%ld\n", a);
// 4바이트 정수형
printf("%d\n", a);
// 2바이트 정수형
printf("%hd\n", a);
// 1바이트 정수형
printf("%hhd\n", a);

// 1바이트 문자형
printf("%c", a);

// 문자열
printf("%s", a[64]);

// 실수형(float, double)
printf(%nf, a);
printf("%lf", a);

// 16진수형(0x 표현을 쓰지 않는 경우)
printf("%x", "%hx", %hhx", "%llx", a);
// 16진수형(0x 표현을 쓰는 경우)
printf("0x%x", a);
  • 형 변환 연산자를 쓰게 되면 컴파일러에게 나는 자료형을 알고 있다는 의미
  • 256, 128등 메모리 공간에 벗어나는 값을 집어넣게 되면 오버플로우 현상이 발생하여 예상값의 음수값, 0이 나오게 됨
  • 자료형 변환 연산자를 써줌으로 인해서 메모리 공간을 늘리거나 줄이거나 하는 기능을 수행하게 됨

4) 출처

본 게시글은 김성엽 선생님의 금배씨 영상 중 "자료형과 자료형 변환 연산자" 를 바탕으로 만들어 졌습니다.

profile
EasyWin32를 통해 C언어를 공부하고 있습니다~

0개의 댓글

관련 채용 정보