(CS50)-프로그래밍 응용(형변환)

CS50 x edwith 강의를 들으며 정리한 공부 포스팅입니다.

출처

핵심 개념

  • 형변환
  • 명시적 형변환
  • 암묵적 형변환

형변환

  • 변수를 한 자료형에서 다른 자료형으로 변환시켜줘야 할 때 해결하는 방법.
  • 정밀도(표현 범위)가 더 높은 자료형으로 바꿀 경우 값에 오차가 발생할 수 있다.

char형과 int형 사이의 형변환

#include <stdio.h>

int main()
{
    int x = 65;
    printf("%d\n", x);//65출력
    printf("%c\n", (char)x);//A출력
}
  • 명시적 형변환 - 이미 존재하는 변수 앞에 새로운 자료형을 넣어 다른 자료형으로 바꿔주

    는 것

    • 7번째 줄에는 6번째 줄과 마찬가지로 x값을 출력하지만 변수 이름 앞에 (char)이

      작성되어 있어 char형으로 변환됨.

  • 암묵적 형변환 - 형식문자에 의해 컴파일러가 자동으로 그 값을 다른 자료형으로 바꿔주

    는 것

    • 7번째 줄에 이미 char형을 위한 형식문자 “%c”가 있음.
  • 사람들이 이해하기 쉽기 때문에 명시적 형변환이 더 좋은 방식이라고 할 수 있음.

int형과 float형 사이의 형변환

#include <stdio.h>

int main()
{
    int a = 28;
    float b = a/5;
    float c = (float)a/5;
    
    float d = 28.523;
    int e = d;
}
  • b의 값은 5.6이어야 하지만 실제 b의 값은 5.0이 된다.
    • 컴파일러가 정수 2개를 나누었기 때문에 그 결과도 정수로 나왔기 때문.
    • 이를 해결하기 위해 명시적 형변환을 하면 c는 5.6이 됨.
  • e의 값은 28
    • e는 int형이기 때문에 d는 묵시적으로 int형으로 형변환되며
    • 이 과정에서 소수점 뒤의 값을 버리게 됨.

Comments