Knowledge/C++
C++ double 자료형 나머지연산(%)
TakeKnowledge
2019. 7. 5. 10:58
반응형
BOJ 10430번문제 ( https://www.acmicpc.net/problem/10430 )를 풀면서 알게 된 것
부끄러운 고백이지만 나는 이 문제를 본 순간 나누기 연산과 나머지 연산을 혼동했다.
대충 보고 아 뭐 같은지 확인 하면 된다니 그냥 C를 더블로 선언해서 나눠보면 되겠네? 하고 쉽게 접근해서 코드 짜고 돌려보니
컴파일 에러가 났다.
그제서야 정신 부여잡고 다시 코드를 찬찬히 보면서 이것 저것 찾아보니
자바와 C++에서의 나머지 연산(%) 사용 조건이 서로 달라 발생한 문제였다.
예를 들어 아래와 같은 코드를 자바로 짜면 에러가 나지 않는다
1
2
3
4
5
6
7
8
9
|
public static void main(String[] args) {
double a = 10.0;
double b = 3.0;
System.out.println(a % b);
// 1.0
}
|
cs |
즉 자바에서는 double 형간의 나머지 연산 (% 사용) 이 가능하지만
1
2
3
4
5
6
7
8
9
10
11
|
#include <iostream>
using namespace std;
int main(void){
double a = 10.0;
double b = 3.0;
cout << a%b ;
// 컴파일 에러
}
|
cs |
같은 코드를 C++로 짜고 실행시키면 컴파일 에러가 발생한다
결론 1. C++에서 나머지 연산은 int, long 등 정수형 자료형끼리 수행할 때만 가능하다
결론 2. 건방떨며 방심하지 말고 항상 정신 똑디 챙기자
- 참고
C 언어에서 나머지 연산자 % 에 대하여
반응형