언어/C++

[C++] 오류 : E2140) 식에 정수 또는 범위가 지정되지 않은 열거형 형식이 있어야 합니다.

study_memo 2025. 3. 18. 11:08

 

위와 같은 오류가 뜨는 이유는 변수 A, B, C를 선언할 때 실수형 자료형인 float을 사용했기 때문이다. 

float 타입은 실수를 다루는 자료형으로, % 연산자는 정수형 자료에만 적용할 수 있다.

% 연산자는 정수형 나머지 연산을 위한 연산자이다. 따라서 float 자료형에는 사용될 수 없다.

 

그러므로 오류를 없애려면 float이 아닌 int 타입을 사용해야 한다. 

 

만약 실수로 나머지를 구하고 싶다면?

fmod 함수를 사용해야 한다. fmod는 두 실수의 나머지를 구하는 함수이다.

 

fmod를 이용한 코드는 아래와 같다. 

#include <iostream>
#include <cmath>  // fmod 함수를 사용하려면 이 헤더를 포함해야 한다.
using namespace std;

int main() {
    float A, B, C;
    cin >> A >> B >> C;

    cout << fmod(A + B, C) << endl;
    cout << fmod(fmod(A, C) + fmod(B, C), C) << endl;
    cout << fmod(A * B, C) << endl;
    cout << fmod(fmod(A, C) * fmod(B, C), C) << endl;

    return 0;
}