Notice
Recent Posts
Recent Comments
Link
C.
16.5 심사문제: 실수를 정수로 변환하기 본문
표준 입력으로 실수가 하나가 입력됩니다. 입력된 실수에서 소수점을 버리고 정수 부분만 출력되게 만드세요.
정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.
어떤 자료형의 값을 다른 크기가 작은 쪽, 표현 범위가 더 좁은 쪽의 자료형에 넣게 되면 형 축소가 일어납니다.
이렇게 형 축소가 일어나면 값의 손실이 생기게 됩니다.
실수와 정수를 예로 들어본다면 2.5와 같은 실수형 값을 정수형 변수에 넣게 되면 정수형이 감당할 수 없는 소수점
부분을 버리게 되고 출력하면 2와 같은 정숫값이 나오게 됩니다.
이 문제는 이러한 형의 축소를 이용해 푸는 문제입니다.
입력된 실숫값이 저장되어 있는 num1의 값을 정수형 변수에 저장하고 출력한다면 소수점 부분을 제외한 정수 부분만
출력될 것입니다.
그러므로 정답은
int num2 = num1;
printf("%d",num2);
입니다.
하지만 이렇게 하면 데이터가 손실될 수 있다며 컴파일 경고가 나옵니다. 경고가 나오지 않도록 강제 형 변환(명시적 형 변환)을 하는 방법도 있습니다.
printf("%d", (int)num1);
'C언어 > 코딩도장 강좌 -> 심사문제 풀이' 카테고리의 다른 글
19.5 심사문제: 교통카드 시스템 만들기 (0) | 2020.02.19 |
---|---|
17.8 심사문제: 청소년 콘텐츠 관람 제한하기 (0) | 2020.02.17 |
15.5 심사문제: 정수의 각 자릿수를 역순으로 출력하기 (0) | 2020.02.05 |
8.12 심사문제: 오버플로우 (0) | 2020.01.31 |
7.11 심사문제: 정수형 변수 선언과 오버플로우 (0) | 2020.01.29 |