为什么双精度引用值在分配给C++中的浮点变量时不会更改
Why double reference value doesn't change when assigned to float variable in C++
我正在尝试理解将浮点值分配给常量引用double的概念,并且如果浮点值更新,则double的值不会改变。
float d = 2.0;
const double & f = d;
d = 3.0;
std::cout << d << " " << f << std::endl;
输出:
3 2
这背后的原因是什么。
然而,当我们将引用变量设置为与其他变量相同的类型时,就不会出现这个问题。
然而,当我们将引用变量设置为与其他变量相同的类型时,不会出现此问题
这就是重点;不能直接将引用绑定到具有不同类型的对象。
给定const double & f = d;
,将从d
构造临时double
,然后绑定到参考f
。d
的修改与临时性无关;它们是两个无关的物体。这就是为什么打印d
和f
时会得到不同的结果。
BTW:只有对const的左值引用和右值引用可以绑定到临时,所以const double & f = d;
和double && f = d;
可以正常工作。对非常量的Lvalue引用不能绑定到临时,则double & f = d;
将不起作用。
相关文章:
- 算术运算的结果类似于:C浮点变量中的1/3
- 为什么双精度引用值在分配给C++中的浮点变量时不会更改
- 是否可以保证浮点变量的副本将按位等效于原始副本?
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- 为什么将浮点变量与另一个浮点变量的缩减为int给出了完全不同的答案
- 如何线性化两个浮点变量的乘积
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 比较 C++ 中的两个浮点变量
- 我创建了一个将雷亚尔转换为美元的程序,但浮点变量不正确
- 浮点变量不存储十进制
- 在 c++ 中,浮点变量除以整数变量时的结果类型
- 在C 中声明一个八倍精度浮点变量
- 有符号浮点变量转换为无符号DWORD
- 比较浮点变量
- 浮点变量变为无穷大
- 在C++中对浮点变量执行算术时,是否始终需要使用浮点数文字
- 当两个整数相乘并将结果存储在浮点变量中时,结果是否可以流动
- 在文本浏览器中打印Qt浮点变量
- 如何比较C++中的浮点变量
- 使用int错误进行浮点变量计算