개요
형변환 예제 |
Code
#include<stdio.h>
int main(void)
{
char ch = 'a';
short sh = 123;
int in = 4567;
long lo = 12345L;
float fl = 123.34f;
double dou = 456.78;
float f_value1 = 123.456f;
float f_value2 = 1.2345E+02f;
double d_value1 = 0.0123;
double d_value2 = 1.23E-03;
int i_input;
float f_input;
char c_input;
char c_string[20];
printf("자동 자료형 변환 \t: ch = %c, sh = %d, in = %d, fl = %f, dou = %lf\n", ch, sh, in, fl, dou);
sh = ch;
in = sh;
fl = in;
dou = fl;
printf("자동 자료형 변환 후 \t: ch = %c, sh = %d, in = %d, fl = %f, dou = %lf\n", ch, sh, in, fl, dou);
//변수선언 시 입력값으로 재입력
ch = 'a';
sh = 123;
in = 32767;
lo = 12345L;
fl = 123.34f;
dou = 456.78;
ch = (char)sh;
sh = (short)in;
in = (int)fl;
fl = (float)dou;
printf("강제 자료형 변환 : ch = %c, sh = %d, in = %d, fl = %f, dou = %lf\n", ch, sh, in, fl, dou);
printf("float val1 \t= %f, \tfloat val2 \t= %E\n", f_value1, f_value2);
printf("double val1 \t= %lf, \tfloat val2 \t= %E\n", d_value1, d_value2);
printf("input int > ");
scanf_s("%d", &i_input); //숫자형 자료의 scanf_s 사용
printf("int = %d\n", i_input);
printf("input float > ");
scanf_s("%f", &f_input);
printf("float = %f\n", f_input);
printf("input char > ");
scanf_s("\n%c", &c_input,(unsigned)sizeof(char)+1); //문자형 자료의 scanf_s 사용
// ↑\n은 f_input을 입력 할 때 사용한 enter 입력을 제외 시키기 위해 사용
// ↑↑,문자형 자료를 입력 받을 때, 입력받을 자료의 크기를 인자로 입력해야함
// ↑↑↑반환 되어야 하는 자료형이 unsigned int 이므로 (unsigned)를 사용해 변환
// ↑↑↑↑\n도 포함해야 하므로 +1
printf("char = %c\n", c_input);
printf("input string = ");
scanf_s("%s", c_string, (unsigned)sizeof(c_string));
// ↑반환 되어야 하는 자료형이 unsigned int 이므로 (unsigned)를 사용해 변환
printf("string = %s\n", c_string);
return 0;
}
Output