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 언어에서 나머지 연산자 % 에 대하여    

http://andyader.blogspot.com/2013/08/c_27.html

반응형