2013-08-04 18 views
5

Tôi đang viết một chương trình cho lớp cấu trúc điều khiển của mình và tôi đang cố gắng biên dịch nó. Lỗi duy nhất, ít nhất là lỗi duy nhất mà trình biên dịch nhận được là nói toán hạng không hợp lệ của các loại 'double' và 'int' đối với toán tử nhị phân '%'. Hầu hết các chương trình không được bao gồm vì nó quá dài và không thực sự liên quan đến vấn đề này, ít nhất tôi không tin.Toán hạng không hợp lệ của loại 'double' và 'int' đối với toán tử nhị phân '%'

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

static_cast<int>(maxTotal); 

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

Trả lời

5

static_cast của bạn không hoạt động. Những gì bạn nên làm là:

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

Các biến trong C++ không thể thay đổi loại. Truyền tĩnh trả về giá trị được truyền, nó không thay đổi kiểu của biến đầu vào, vì vậy bạn phải sử dụng nó trực tiếp hoặc gán nó.

int iMaxTotal = static_cast<int>(maxTotal); 

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

Điều này cũng sẽ hoạt động.

+0

Ahhhh, cảm ơn bạn rất nhiều. – user2649644

0

Bạn nên gán dàn diễn viên của mình vào một biến nếu không nó không hoạt động. static_cast<int>(maxTotal) sẽ trả về một loại giá trị 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;