티스토리 뷰
jungol > 문제 > Langauge_Corder > 디버깅 - 자가진단 1~2
자가진단 1
이번에는 디버깅 문제다!
디버깅이란 버그를 찾고 해결하는 행위를 의미하며
기본적으론 프로그램을 돌릴 때 한 문장 한 문장씩 실행하는 등 어디에 문제가 발생했는지를 차근차근히 코드를 따가라면서 찾아내는 행동을 뜻한다.
변수의 자료형을 바꿔주고 싶을 땐 변수 옆에 괄호를 친 후 원하는 자료형을 넣어주면 된다.
문제에서의 조건은
1. 두 실수의 곱을 정수형으로
2. 두 실수를 각각 정수형으로 만든 뒤 이들의 곱을
이므로
10) printf("%d", (int)(a*b));
//(int)(a*b) 즉 두 실수의 곱을 구한 다음 자료형 변환을 했다.
11) printf("%d", (int)a*(int)b);
//(int)a*b 즉 a와 b을 둘 다 정수형으로 바꾼 다음
둘을 곱했다.
형변환
자동형변환 : 자동으로 컴파일러 내에서 자료형이 변환
강제형변환 : 코딩하는 사람이 강제적으로 변환
자동형변환은 컴파일러가 코딩하는 사람의 의도와는 관계없이 변환되는 것을 의미한다.
보통 실수하고 정수를 곱할 때 값이 실수로 나오게 되는데, 이 과정에서 컴파일러는
정수형 값을 먼저 실수형으로 바꾼 다음 연산을 한다.
ex) int a = 2; float b = 1.1;
-> int a * float b
-> float a * float b (자동형변환)
강제형변환은 사용자가 강제로 변환시키는 것을 의미한다.
ex)
float b = 5.65;
을 int형으로 쓰고 싶으면
(int)b //(int)b=5 (실수형에서 정수형으로 변환시 소수점 이하는 내림한다.
이렇게 괄호와 자료형을 적어주면 된다.
ex)
int a = 5;
(float)a; //(float)a = 5.000000
이렇게도 변환이 가능하다.
실행했을 때의 예.
자가진단 2
이번에는 정수형을 실수형으로 바꾼다.
그러므로 정수형 변수 앞에 (float) 또는 (double)을 붙여주면 된다. (강제형변환)
- 11) printf(" %.2f", (float)a/b);
//강제형변환 및 자동형변환
- (float)a / b //강제형변환
- 실수형 / 정수형 이므로
- 실수형 / 실수형 //자동형변환
그러므로 변수 a에다가 만 (float)을 해주면 된다!
잘 작동한다!
코드
자가진단 1
#include <stdio.h>
int main(void)
{
double a = 0.0; double b = 0.0;
scanf("%lf", &a);
scanf("%lf", &b);
printf("%d", (int)(a*b));
printf(" %d", (int)a*(int)b);
return 0;
}
자가진단 2
#include <stdio.h>
int main(void)
{
int a = 0; int b = 0; // 두 정수형 변수 초기화
scanf("%d", &a); //정수 값을 입력 받음
scanf("%d", &b);
printf("%d", a/b); //출력
printf(" %.2f", (float)a/b); //실수형 변환 후 출력
return 0;
}
'c언어 > jungol' 카테고리의 다른 글
c언어 디버깅 형성평가 3~4 (jungol) (0) | 2022.02.19 |
---|---|
c언어 디버깅 형성평가 1~2 (jungol) (0) | 2022.02.18 |
c언어 연산자 - 형성평가 1~5 (jungol) (0) | 2022.02.16 |
c언어 연산자 - 자가진단 7~8 (jungol) (0) | 2022.02.15 |
c언어 연산자 - 자가진단 5~6 (jungol) (0) | 2022.02.14 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 최대공약수
- 트리
- C언어
- 카드
- 오프라인 쿼리
- 덱
- DP
- DFS
- 세그먼트 트리
- union
- 누적합
- 6198
- BFS
- 1835
- 6198번
- 정렬
- C++
- 1835번
- 스택
- 그래프
- find
- 최소 스패닝 트리
- 백준
- 플로이드
- Krustal
- Mo.s
- 16120번
- java
- 누적 합
- 그리디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함