티스토리 뷰

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);

//강제형변환 및 자동형변환

  1. (float)a / b //강제형변환
  2. 실수형 / 정수형 이므로
  3. 실수형 / 실수형 //자동형변환

그러므로 변수 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;
}
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함