如何确定表达式值的类型

How to determine type of the value of an expression?

本文关键字:类型 表达式 何确定      更新时间:2023-10-16

1)当语句(例如

cout << 3.0 + 3 ; 

是制造的,如何知道传递给cout的值是int还是float?

都不是。这是双重的。3.0具有双重型,并且3被提升为加倍以增加添加。将双倍添加到双倍的结果是双重。这与结果所做的事情无关。

有一堆Ostreams的超载移位运算符,右侧有一个double的参数,所以这就是所谓的:

template <class Elem, class Traits>
basic_ostream<Elem, Traits>& basic_ostream<Elem, Traits>::operator<<(double d);

对于它的价值,这是成员函数,而不是免费功能。

它通过利用过载

来实现此目的
ostream& operator<<(ostream& output, int i) {
  // It's an int
}
ostream& operator<<(ostream& output, float f) {
  // it's a float
}

C 编译器将根据输入类型选择<<操作员的适当过载。如果您通过float,它将选择具有float的过载,而int

相同

3.0 + 3操作的结果是双重的,因此COUT将应用&lt;&lt;双重类型的操作员。

您可以将步骤用于调试器的功能来确定这一点。它将输入哪种cout方法是您的答案

相关文章: