C언어 - 자료형 변환 (Type Conversions)
long double > double > float
unsigned long long, long long
unsigned long, long
unsigned, int
short int, unsigned short int
signed char, char, unsigned char
_Bool
Ref: Google 'Integer conversion rank'
실수가 정수보다 순위가 높다.
d = f + 1.234;
계산하기 위해 f를 double로 바꾸어 계산후 d에 대입
f = f + 1.234;
이 expression의 값이 double 이다.
f+ double이 되기 때문에 값이 double인데 다시 f에 넣으려니 warning이 뜬다.
// casting operators
int i;
float f;
d = (double) 3.14f;
i = 1.6 + 1.7; // double 더하기 double 이기 때문에 3.3인데 int에 들어가면 절삭이 되어 3이 됨.
i = (int) 1.6 + (int) 1.7; // 1 + 1 이되어 2가된다. (truncation절삭 됨)
int i;
float f;
char c;
f = i = c = 'A'; // 65
printf("%c %d %f, c, i, f);
c = c+2; // 'C', 67
i = f + 2 * c; // 65.0f +2 *67 -> 실수에서 정수로 넘어가면서 데이터 소실 우려
출처 : 홍정모의 따라배우는 C언어