01.floatf = 12.3; 02. 03.float* pf = &f; 04.// static cast<> 05. 06.// 成功编译, n = 12 07. 08.intn =static_cast(f); 09. 10.// 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) 11.//int* pn = static_cast(pf); 12. 13.//成功编译 14....
int *ni = static_cast<int *>(nv); std::cout << "6) *ni = " << *ni << '\n'; 控制台输出 6) *ni = 3 9.枚举转int(scoped enum to int) 将枚举代表的值转换为int enum class E { ONE = 1, TWO, THREE }; E e = E::TWO; int two = static_cast<int>(e); std::cout ...
int n = static_cast<int>(f); // 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) //int* pn = static_cast<int*>(pf); //成功编译 void* pv = static_cast<void*>(pf); //成功编译, 但是 *pn2是无意义的内存(rubbish) int* pn2 = static_cast<int*>(pv...
static_cast是一种简单的类型转换,它属于编译时强制转换。它能够进行隐式转换(如int到float,或指针到void*),也可以调用显式转换函数(或隐式转换函数)。const_cast用法示例 下面是static_cast的11个使用场景示例:1. 用于原C风格的隐式类型转换,例如float转int 2. 静态下行转换(static downcast...
int i = reinterpret_cast<int>(f); //成功编译, 但是 *pn 实际上是无意义的内存,和 *pn2一样 int* pi = reinterpret_cast<int*>(pf); //简而言之,static_cast<> 将尝试转换,举例来说,如float-到-integer,而reinterpret_cast<>简单改变编译器的意图重新考虑那个对象作为另一类型。
short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。 但若 double a=2000; short b; ...
static_cast可以用来转换不同的基本数据类型。例如,将int转换成float,或者将double转换成int。这种转换在...
float* pf = &f; 1. // static cast<> // 成功编译, n = 12 int n = static_cast<int>(f); // 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) //int* pn = static_cast<int*>(pf); //成功编译 ...
一般情况下,你可以使用static_cast用于数字类型的转换,如把枚举转换为int或是 float类型。 之所以讲static_cast不够安全,就是指在运行阶段不进行类型检查(和dynamic_cast相比,但是dynamic_cast也有一定的局限性,我们以后再讨论)。 具体用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行...
int* pi = reinterpret_cast<int*>(pf); 简而言之,static_cast<> 将尝试转换,举例来说,如float-到-integer,而reinterpret_cast<>简单改变编译器的意图重新考虑那个对象作为另一类型。 指针类型(Pointer Types) 指针转换有点复杂,我们将在本文的剩余部分使用下面的类: ...