好像在C语言里(T)都叫强制转换,但是C++里做了区分
float f;
// 这俩其实都是强制转换,ip 和 &a甚至值都不变
int* pi = (int*) &f; // 1
int i = (int) f; // 2
但是对于1,程序员的真实需求通常是
int fi = *pi; // *((int*)&f);
这个就是重解释转换了:
int i = static_cast<int>(f);
int fi = *reinterpret_cast<int*>(&f);
// 这个转换就不允许了
int* pii = static_cast<int*>(&f);
// 但是兼容C的代码还是可以的
int* pii = (int*)&;
int fi = *pii;
【 在 webhost 的大作中提到: 】
: 有一段内存p1,里面存放了浮点数
: 我想这样做int *p2 = (int *)p1 当做整数数组来处理
: 这个我一直以为是叫强制转换
: ...................
--
FROM 104.134.27.*