将代码声明放入字中(引用操作符和解引用操作符混淆)
putting code declaration into words (reference operator and dereference operator confusion)
嗨,我是c和c++的初学者,完全被这几行代码弄混了,我不需要知道结果,只是想正确理解第二行,下面是代码
float f = 7.0;
short s = * (short * )&f;
据我所知,您将float的前16位重新解释为short.
发生了什么:你首先获得浮点数的地址,然后你将指针转换为short*
指针,这样你一次取16
位,而不是32
。最后查询指针的值。
由于7.0
表示为(http://www.h-schmidt.net/FloatConverter/IEEE754.html):
00000000 00000000 01110000 01000000
结果是0
,如果你采取第二个短,它将是16 496
例如:
float f = 7.0068;
则结果为:14 261
相关文章:
- 清楚地说明 * 和 & 作为类型的一部分和作为取消引用/address_of操作符之间的区别
- 对友元操作符的未定义引用
- 将代码声明放入字中(引用操作符和解引用操作符混淆)
- 如何在c++中重载=操作符来通过引用进行复制
- 带引用类成员的赋值操作符
- 如何使操作符[]返回对unsigned int中单个位的引用
- 强制转换操作符重载和引用
- 下标操作符重载:返回引用问题
- 在操作符[]前解引用成员指针
- 解引用操作符(*)作为类的成员函数重载时是如何工作的?
- 返回值的引用操作符
- c++ std::map::iterator一无所获,但下标操作符返回对映射值的引用
- 操作符重载在没有引用的情况下可以工作吗?
- 操作符重载- cout和cin——ostream函数,不能被引用——它是一个已删除的函数
- QMap/QHash操作符[]返回引用有效性
- c++ 11管道操作符中的右值引用
- c++操作符重载中返回引用和不返回引用的区别是什么?
- Boost::bind重载操作符导致Boost未定义引用错误
- 操作符重载=和const引用
- 通过不返回引用来防止下标操作符的赋值会导致运行时崩溃