类型转换

来源:互联网 发布:hadoop hdfs 端口号 编辑:程序博客网 时间:2024/04/29 10:16

2.6.1 隐式转换类型

char->short->int->double->long double
^
|
float
在以下四种情况,都会发生隐式转换类型
1.多种数据类型的算数表达式。转换原则是窄数据类型向宽数据类型转换。
2.将一种类型的数据类型赋值给另一种类型的变量,会发生隐式转换类型,把赋值句右边的表达式转换成左边的变量类型。
3.在函数调用中,若实参表达式与形式参数的类型不相符,则把实参的类型转换成形参的类型;在函数返回时,以函数的返回值类型为准。

2.6.2 显式转换类型
把一种数据类型转强制转换成另一中数据类型就称为显示转换,也称为强制转换。 形式如下 (type)exp 或者 type (exp)
其中,type是目标类型函数,exp是要进行的类型转换的表达式,第一种在c++和c中都可以用,但是第二种,只能在c++中使用。
在c++标准中,还有4个强制类型转换的运算符:static_cast,dynamic_cast,const_cast,reinterpret_cast.用法如下:
X-cast (exp)
其中,X-cast代表强制转换类型,可以是上面四个中的任意一种,type是强制转换之后的类型,exp是要转换类型的表达式。
static-cast是静态强制转换类型,能够实现任何标准类型之间的转换,如从整型到枚举型,从浮点型到整型的转换,实际上,只要是隐式转换可以进行的转换,static-cast都可以实现,
例如:

#include <iostream>using namespace std;int main(){  char p='d';  int x=static_cast<int>(p);  double y=static_cast<double>(54);  cout<<x<<" "<<y;}

输出 100 54

const-cast是常量强制转换类型,用于强制转换const或这volatile(可变)的数据,它转换前后的数据类型必须相同,主要用来在运算时暂时删除数据的const限制。

0 0
原创粉丝点击