A cast to float
#include <iostream>
using namespace std;
int main(){
int i;
for(i=1; i <= 10; ++i )
cout << i << "/ 2 is: " << (float) i / 2 << "\n";
return 0;
}
1/ 2 is: 0.5
2/ 2 is: 1
3/ 2 is: 1.5
4/ 2 is: 2
5/ 2 is: 2.5
6/ 2 is: 3
7/ 2 is: 3.5
8/ 2 is: 4
9/ 2 is: 4.5
10/ 2 is: 5
Ambiguous function call when data type casting from int to char and unsigned char
#include <iostream>
using namespace std;
char myfunc(unsigned char ch);
char myfunc(char ch);
int main()
{
cout << myfunc("c"); // this calls myfunc(char)
//cout << myfunc(88) << " "; // ambiguous
return 0;
}
char myfunc(unsigned char ch)
{
return ch-1;
}
char myfunc(char ch)
{
return ch+1;
}
d"
Ambiguous function call when data type casting from int to double and float
#include <iostream>
using namespace std;
float myfunc(float i);
double myfunc(double i);
int main()
{
cout << myfunc(10.1) << " "; // unambiguous, calls myfunc(double)
//cout << myfunc(10); // ambiguous
return 0;
}
float myfunc(float i)
{
return i;
}
double myfunc(double i)
{
return -i;
}
-10.1 "
reinterpret_cast operator: cast from void * to unsigned *
#include <iostream>
using namespace std;
int main()
{
unsigned x = 22, *unsignedPtr;
void *voidPtr = &x;
char *charPtr = "C++";
// cast from void * to unsigned *
unsignedPtr = reinterpret_cast< unsigned * >( voidPtr );
cout << "*unsignedPtr is " << *unsignedPtr << "\ncharPtr is " << charPtr;
return 0;
}
reinterpret_cast operator: cast unsigned back to char *
#include <iostream>
using namespace std;
int main()
{
unsigned x = 22, *unsignedPtr;
void *voidPtr = &x;
char *charPtr = "C++";
// cast unsigned back to char *
cout << "\nunsigned to char * results in: " << reinterpret_cast< char * >( x ) << endl;
return 0;
}
reinterpret_cast operator: use reinterpret_cast to cast a char * pointer to unsigned
#include <iostream>
using namespace std;
int main()
{
unsigned x = 22, *unsignedPtr;
void *voidPtr = &x;
char *charPtr = "C++";
// use reinterpret_cast to cast a char * pointer to unsigned
cout << "\nchar * to unsigned results in: " << ( x = reinterpret_cast< unsigned >( charPtr ) );
return 0;
}
Using Explicit Casts
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
const long a = 3;
const long b = 12;
double c = 234.0;
long d = 0;
long f = 0;
long g = 0;
d = static_cast<long>(c);
f = static_cast<long>((c - d) * a);
g = static_cast<long>(c * a * b) b;
cout << c << " \n "
<< d << " \n "
<< f << " \n "
<< g << " \n ";
cout << endl;
return 0;
}
234
234
0
0