[프로그래밍언어, C] Type Casting(타입캐스팅, 형 변환)

2017. 3. 12. 17:539급 공무원/컴퓨터 일반

float i; i=100/300; // (1) printf("%.2f\n",i); i=(float)(100/300); // (2) printf("%.2f\n",i); i=(float)100/300; // (3) printf("%.2f\n",i); i=100/300.0; // (4) printf("%.2f\n",i);


출력 :

0.00

0.00

0.33

0.33


출력결과와 같이

 정수간의 나눗셈 연산이 이루어질 경우 소수점 자리는 버려진다. 변수에 값이 들어가면서 형변환이 되는 것이 아니라 애초에 형변환이 없다!(1)
1/3 = 0 (0.33.. 인데 소수점 아래 버려짐) 

 연산의 결과에 형변환을 시켜봐야 어차피 (100/300) 이 0이 되기 때문에 아무런 의미가 없다.(2)

 소수점을 포현하고 싶으면 피연산자 하나를 float형으로 형변환해주어야 한다. 둘중의 숫자를 형 변환 시켜주든지(3), 소수점까지 표현을 해주어야 한다.
 * 묵시적 형변환 : 두 피연산자의 자료형이 다를 경우 더 큰 자료형에 맞추어 계산된다! (대입연산의 경우는 왼쪽 자료의 형에 맞추어짐)