-
[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