ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C/C++] 형변환
    기초/C,C++ 2017. 2. 15. 10:20

    형변환

    형변환에도 2가지 형태가 있는데요

    먼저 컴파일시 컴퓨터가 자동으로 형변환을 해주는 것(자동 형변환)과

    프로그래머가 직접적으로 형변환을 해주는 것(명시적 형변환)이 있어요

     

     

    #1. 자동형변환

    [올림 변환]

    (실수형 변수에 정수값을 넣었을 때)

    double f;

    f = 10+20;

     

    [내림 변환]

    (정수형 변수에 실수값을 넣었을 때)

    int i;

     i = 3.141592;

     

     

    [다른 자료형 연산]

    char와 short연산

    char x → int x;

    short y → int y;

    why?

    c에서는 int type의 처리가 "가장" 빠르기 때문에 다른 타입의 계산을

    자동으로 int type으로 형변환 해준다.

     

     

     

     

    #2. 명시적형변환

    형변환을 프로그래머가 직접적으로 해주는 형태를 의미해요

     

    처음 값은 49.0이 나온 이유는

    두 개의 변수가 int type이기 때문에 계산한 결과가 정수형태로 나온 건데요.

    따라서 형변환을 해주지 않으면 내림형태가 형태가 되는 것입니다.

    연산을 형변환 해줌으로써 상수 2도 정수타입에서 실수타입으로 자동형변환이 되어 연산 / 2.000 이 계산되어 결과가 출력되는 것 이예요.

    [사용법]

    그때 계산할 값 앞(변수, 연산...)에 (형변환할 타입)을 붙여 주는 것입니다.

     

    따라서 다른 타입의 변수에 다른타입의 값을 넣거나

    다른 타입끼리의 연산을 다른 타입의 변수에 넣을때는

    어떻게 넣을 건지를 생각해야합니다.

     

    ex)
    double num1 = 1;

    double num2 = 2;

     

    int sum1, sum2;

     

    sum1 = num1+num2;

    sum2 = (int)num1+(int)num2;

     

    sum1과 sum2는 엄연히 다르게 됩니다.

    이유는 실수 값의 계산에서 "오차"가 발생할 수 있기때문입니다.

     

     

    컴파일 할때도 경고메세지가 발생되는 이유기도 하네요.

    따라서 프로그래머의 능력이 여기서 결정되기도 하겠습니다.

     

     

    '기초 > C,C++' 카테고리의 다른 글

    [C/C++] 조건문  (0) 2017.02.16
    [C/C++] scanf  (0) 2017.02.15
    [C/C++] C언어 키워드  (0) 2017.02.15
    [C/C++] 사칙연산, 연산자  (0) 2017.02.14
    [C/C++] C에서 문자열 사용  (0) 2017.02.13

    댓글

Designed by Tistory.