(int&)a和(int)&a

本文探讨了C++中浮点数与整数之间的转换方式,特别是通过引用和地址进行转换的过程及结果。解释了(float)与(int)类型的转换原理,并展示了不同转换方法在内存中的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


float b=0.0;
float a=1.0;
cout<<(int&)b<<endl;
cout<<(int)&b<<endl;
cout<<(int&)a<<endl;
cout<<(int)&a<<endl;
}

输出结果是:
0
2031096
1065353216

2031084


(int&)a == static_cast<int&>(a)


(int)&a == reinterpret_cast<int>(&a);
(int&)a 不经过转换, 直接得到a在内存单元的值。(int&)a就是将a转换为int型的引用
(int)a a在内存中的值转换成int类型

float类型在内存中存储的形式是 ,符号位 指数 尾数
由754标准:阶码采用增码(该数补码的反符号),尾数采用原码
所以1.0f 在内存中的形式为
0011 1111 1000 0000 0000 0000 0000 0000
所以输出的是 0x3f800000
0 在内存中的的存储形式
0000 0000 0000 0000 0000 0000 0000 0000
(int&)a 把a强制转换成整形引用类型
(int)&a 把a的地址强制转换成整型

不过最好不要(int)&a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值