2013-08-04 35 views
5

Denetim yapılarım sınıfım için bir program yazıyorum ve derlemeye çalışıyorum. Tek hata, en azından derleyicinin yakaladığı tek hata, 'double' ve 'int' türlerinin geçersiz işlenenlerini 'binary' operatörüne 'yazmasıdır. Programın çoğu, çok uzun olduğu için dahil edilmiyor ve bu problemle gerçekten ilgili değil, en azından inanıyorum.'double' ve 'int' türünde ikili işleç için geçersiz işlenenler '%' işleci% '

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

static_cast<int>(maxTotal); 

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

cevap

5

static_cast'iniz hiçbir şey yapmıyor. Yapmanız gereken şey:

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

C++'daki değişkenler türleri değiştiremez. Statik döküm, döküm değişkeni, girdi değişkeninin türünü değiştirmez, böylece doğrudan kullanmanız veya atamanız gerekir.

int iMaxTotal = static_cast<int>(maxTotal); 

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

Bu da işe yarar.

+0

Ahhhh değerine dönecektir. – user2649644

0

Oyuncunuzu bir değişkene atamalısınız, aksi halde hiçbir şey yapmaz. static_cast<int>(maxTotal) çok teşekkür ederim, tip 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; 
İlgili konular