정수 두 개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력하는 프로그램을 작성해보자.
(단, 입력되는 두 개의 정수 a, b의 범위는 0 ~ 2147483647이고, b는 0이 아니다.)
정수 두 개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력하는 프로그램을 작성해보자.
(단, 입력되는 두 개의 정수 a, b의 범위는 0 ~ 2147483647이고, b는 0이 아니다.)
정수 두 개(a, b)가 공백을 두고 입력된다.
(단, a, b의 범위는 0 ~ 2147483647이고, b는 0이 아니다.)
a를 b로 나누었을 때의 몫을 출력한다.
5 3
1
C언어에서 a/b 연산의 결과는 a를 b로 나눈 몫이 계산된다.
실수/정수,
정수/실수,
(float)정수/정수,
정수/(float)정수
의 연산은 나눈 결과가 실수로 계산된다.
(float)(정수/정수)는 정수/정수의 결과인 정수를 실수형(float)로 바꾸는 것으로, 정수가 실수 형태로 변환되는 것이니 주의한다.
예를 들어 (float)(1/2) 의 결과는 1/2의 결과는 0.5지만 정수/정수이기 때문에 결과는 정수 0이 되고 이를 float로 변환 하기 때문에 0.0이 된다.
맞게 하려면 (float)1/2 의 형태로 해서 1을 강제적으로 실수 1.0으로 변환 후 /2 를 하기 때문에 실수/정수의 연산이다. 따라서 0.5가 된다.
정수/실수... 에서 계산 결과가 실수형으로 바뀌는 것과 같이 계산 결과의 데이터형이 자동으로 바뀌는 것을 묵시적 (데이터)형 변환이라고 하고,
일반적으로 더 큰 타입(형)으로 변경된다.
"(데이터형)변수또는값" 과 같이 어떤 값이나 결과의 데이터형을 바꾸어주는 것을 명시적 (데이터)형 변환이라고 한다.
int a;
scanf("%d", &a);
printf("%f", (float)a);
와 같이 실행하면 정수로 저장되어있는 값을 실수형(float)으로 변환하여 출력한다.