C.

16.5 심사문제: 실수를 정수로 변환하기 본문

C언어/코딩도장 강좌 -> 심사문제 풀이

16.5 심사문제: 실수를 정수로 변환하기

KHY49 2020. 2. 14. 15:48

표준 입력으로 실수가 하나가 입력됩니다. 입력된 실수에서 소수점을 버리고 정수 부분만 출력되게 만드세요.

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

 

어떤 자료형의 값을 다른 크기가 작은 쪽, 표현 범위가 더 좁은 쪽의 자료형에 넣게 되면 형 축소가 일어납니다.

이렇게 형 축소가 일어나면 값의 손실이 생기게 됩니다.

 

실수와 정수를 예로 들어본다면 2.5와 같은 실수형 값을 정수형 변수에 넣게 되면 정수형이 감당할 수 없는 소수점

부분을 버리게 되고 출력하면 2와 같은 정숫값이 나오게 됩니다.

 

이 문제는 이러한 형의 축소를 이용해 푸는 문제입니다.

입력된 실숫값이 저장되어 있는 num1의 값을 정수형 변수에 저장하고 출력한다면 소수점 부분을 제외한 정수 부분만

출력될 것입니다.

 

그러므로 정답은

 int num2 = num1; 

 printf("%d",num2); 

입니다.

 

하지만 이렇게 하면 데이터가 손실될 수 있다며 컴파일 경고가 나옵니다. 경고가 나오지 않도록 강제 형 변환(명시적 형 변환)을 하는 방법도 있습니다.

 

 printf("%d", (int)num1);