Как определить тип значения выражения?

1) Когда такие заявления, как

cout << 3.0 + 3 ;

Как узнать, передано ли значение cout значение типа int или float?

0

Решение

Это ни то, ни другое. Это двойной. 3.0 имеет тип double, и 3 повышен до двойного за добавление; результат добавления двойного к двойному — двойной. Это не зависит от того, что делается с результатом.

Есть несколько перегруженных операторов сдвига влево для ostreams, и есть один для аргумента типа double с правой стороны, так что он называется:

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

Для чего это стоит, это функция-член, а не бесплатная функция.

3

Другие решения

Это достигается за счет использования перегрузки

ostream& operator<<(ostream& output, int i) {
// It's an int
}

ostream& operator<<(ostream& output, float f) {
// it's a float
}

Компилятор C ++ выберет соответствующую перегрузку << оператор на основе типов ввода. Если вы передаете float он выберет перегрузку, которая имеет float и то же самое для int

1

Результат 3.0 + 3 операция двойная, поэтому Cout будет применять << оператор для двойного типа.

0

Вы можете использовать шаг в функцию отладчика, чтобы определить это. В какой метод cout он будет входить это ваш ответ

0