double转换char数组c语言,c – 如何将double转换为float指针?

考虑:

#include

#include

using namespace std;

int main()

{

double d = 10;

float f;

assert( sizeof d == 8 );

assert( sizeof f == 4 );

unsigned char * d_ = (unsigned char *)&d;

printf( "%hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx\n", d_[0], d_[1], d_[2], d_[3], d_[4], d_[5], d_[6], d_[7] );

}

至少在我的机器上,这给出了以下输出:

0 0 0 0 0 0 24 40

这是值为10的double的内部表示.

通过将double *转换为float *,你只看到它的前四个字节 – 0 0 0 0.当你取消引用指针时,你明白为什么你得到一个0输出?

(除此之外,正如其他人所指出的那样,由于破坏严格的别名,指针的解引用是未定义的行为.)

您可能想要的是投射d的值:

static_cast(d);

然后,您可以将该值存储在正确类型的对象中:

float f = static_cast(d);

float * fp = &f;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值