Type Casting !! What Is The Prob. With This Code. Plz Help.

I Can't Figure Out Why This Typecasting Method Gives An Error When Compiling. I Think My Code Is Correct.
#include<iostream>
#include<iomanip>
#include<iomanip>


using namespace std;

int Addition(int,int);
int Subtraction(int,int);
int Divition(int,int);
int Multiplication(int,int);

main()
{
int res=0,num1=0,num2=0,result=0;
cout<<"Enter Two Numbers: ";
cin>>num1>>num2;
cout<<"\n1-Addition";
cout<<"\n2-Subtraction";
cout<<"\n3-Divition";
cout<<"\n4-Multiplication";
cout<<"Select An Option: "<<endl;
cin>>res;
cin.ignore();
if(res==1)
{
result=Addition(num1,num2);
cout<<"Result: "<<result<< endl;
cin.get();
}
else if(res==2)
{
result=Subtraction(num1,num2);
cout<<"Result: "<<result<< endl;
cin.get();
}
else if(res==3)
{
result=Divition(num1,num2);
cout<<"Result: "<<result<< endl;
cin.get();
}
else if(res==4)
{
result=Multiplication(num1,num2);
cout<<"Result: "<<result<< endl;
cin.get();
}
}

int Addition(int a,int b)
{
return a+b;
}
int Subtraction(int a,int b)
{
return a-b;
}
int Divition(int a,int b)
{
float result;
result= static_cast<float>a/b;//<--Error Code
return result;
}
int Multiplication(int a,int b)
{
return a*b;
}
Last edited on
I wouldn't necessarily use template-style explicit casting unless dealing with classes.

I would recommend using just c-style casts like:
 
result = ((float) a) / ((float) b); // note: (float) a/b; may not necessarily give you the fractional value. 
Last edited on
For static_cast to work, you need to put brackets around whatever it is you're casting.

result= static_cast<float>(a)/b;
I Tried.It's Not Working :(
Do you mean vince1027's code is not compiling (because it should)? Or, do you mean the division is not giving the correct value? If it's the latter, your Divition function is returning an int so anything after the decimal point just gets truncated. Divition should return a float
Last edited on
I Tried Ur Code. It Gives a Warning

In function `int Divition(int, int)':
[Warning] return to `int' from `float'
[Warning] argument to `int' from `float'

It's Not Giving Me A Float Value. Still It Consider As Integer Division.
It is not giving you a float value because your function returns an int (shacktar already explained this right above your post).

You should change your return type to float.
 
float Divition(int, int);

Topic archived. No new replies allowed.