위와 같은 오류가 뜨는 이유는 변수 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;
}
'언어 > C++' 카테고리의 다른 글
[C++] 자료형 크기 (0) | 2025.03.18 |
---|---|
[C++] 오류 : E0146) 이니셜라이저 값이 너무 많습니다. (0) | 2024.07.15 |
[C++] 오류 : c1083) 컴파일러 중간 파일을 열 수 없습니다. (0) | 2024.07.04 |
[C++] string 헤더파일을 include 하지 않아도 잘 실행되는 이유 (0) | 2024.01.28 |
[C++] vector 최댓값, 최솟값 구하기 (+ 인덱스까지) (0) | 2024.01.26 |