2013-08-04 3 views
5

제어 구조 클래스 용 프로그램을 작성 중이므로 컴파일하려고합니다. 컴파일러가 픽업하는 유일한 오류는 바이너리 '연산자 %'에 'double'및 'int'유형의 잘못된 피연산자를 말하는 것입니다. 프로그램의 대부분은 너무 길기 때문에 포함되지 않습니다. 적어도이 문제와 관련이 없습니다. 적어도 저는 믿지 않습니다.2 진 '연산자 %'에 'double'및 'int'유형의 피연산자가 올바르지 않습니다.

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

static_cast<int>(maxTotal); 

if(maxTotal % 2 == 1) 
    addCalc = minTotal; 
else 
    addCalc = 0; 

답변

5

static_cast는 아무 것도하지 않습니다. 당신이해야 할 일은 다음과 같습니다 :

if(static_cast<int>(maxTotal) % 2 == 1) 

C++의 변수는 타입을 변경할 수 없습니다. 정적 형변환은 입력 변수의 유형을 변경하지 않는 캐스팅 된 값을 반환하므로 직접 사용하거나 할당해야합니다.

int iMaxTotal = static_cast<int>(maxTotal); 

if(iMaxTotal % 2 == 1) 
    addCalc = minTotal; 
else 
    addCalc = 0; 

이렇게해도됩니다.

+0

Ahhhh, 감사합니다. – user2649644

0

캐스트에 변수를 지정해야합니다. 그렇지 않으면 아무것도 수행하지 않습니다. static_cast<int>(maxTotal)int의 값을 반환합니다.

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

int i_maxTotal = static_cast<int>(maxTotal); 

if(i_maxTotal % 2 == 1) 
     addCalc = minTotal; 
else 
     addCalc = 0;