【发布时间】:2014-10-17 08:28:05
【问题描述】:
首先,我知道这是一个非常简单的问题。我只是在寻找关于为什么编译器决定使用自动类型说明符将以下变量设置为 int 类型的技术解释:
int value1 = 5;
double value2 = 2.2;
auto value3 = value1 * value2;
我知道编译器会从初始化的值中为 value3 派生出 double 类型,但为什么会这样呢?
【问题讨论】:
-
int * double是double。我不了解你,但我不希望std::cout << (3 * 1.5);打印 4。 -
“但究竟为什么呢?” - 因为 C++ 规范是这么说的。之所以这么说,是因为它可能是定义行为的最有意义的方式。
-
如果你想要章节和诗句,请查找 c++ 扩展转换,例如 stackoverflow.com/questions/3841839/…