第三章 处理数据
3.4.4 不同数据类型转换
初始化和赋值进行的转换
// assign.cpp -- type changes on assignment
#include <iostream>
int main()
{
using namespace std;
cout.setf(ios_base::fixed, ios_base::floatfield);
float tree = 3; // int converted to float
int guess = 3.9832; // float converted to int
int debt = 7.2E12; // result not defined in C++
cout << "tree = " << tree << endl;
cout << "guess = " << guess << endl;
cout << "debt = " << debt << endl;
// cin.get();
return 0;
}
以{ }方式初始化时进行的转换
const int code=66;
int x=66;
char c2={66};
char c3{code};
x=31325;
char c5=x;
表达式中的转换
自动转换
short chickens=20;
short ducks=35;
short fowl=chickens+ducks;
传递参数时的转换
强制类型转换
(typeName)value //converts value to typeName type
typeName (value) //converts value to typeName type
程序演示了两种基本的强制类型转换和static_cast<>
// typecast.cpp -- forcing type changes
#include <iostream>
int main()
{
using namespace std;
int auks, bats, coots;
// the following statement adds the values as double,
// then converts the result to int
auks = 19.99 + 11.99;
// these statements add values as int
bats = (int) 19.99 + (int) 11.99; // old C syntax
coots = int (19.99) + int (11.99); // new C++ syntax
cout << "auks = " << auks << ", bats = " << bats;
cout << ", coots = " << coots << endl;
char ch = 'Z';
cout << "The code for " << ch << " is "; // print as char
cout << int(ch) << endl; // print as int
cout << "Yes, the code is ";
cout << static_cast<int>(ch) << endl; // using static_cast
// cin.get();
return 0;
}