#include <iostream>
#include <string>
using namespace std;
template<typename T > string type(T);
int main() {
int x = 8;
float y = 7.5f;
unsigned long long z = 12;
cout << " x => " << type(x) << endl
<< " y => " << type(y) << endl
<< " z => " << type(z) << endl;
cin.get();
return 0;
}
template<typename T > string type(T _var) {
string type;
if (typeid(bool) == typeid(_var)) type = "int";
else if (typeid(char) == typeid(_var)) type = "char";
else if (typeid(unsigned char) == typeid(_var)) type = "unsigned char";
else if (typeid(short) == typeid(_var)) type = "short";
else if (typeid(unsigned short) == typeid(_var)) type = "unsigned short";
else if (typeid(int) == typeid(_var)) type = "int";
else if (typeid(unsigned int) == typeid(_var)) type = "unsigned int";
else if (typeid(long) == typeid(_var)) type = "long";
else if (typeid(unsigned long) == typeid(_var)) type = "unsigned long";
else if (typeid(long long) == typeid(_var)) type = "long long";
else if (typeid(unsigned long long) == typeid(_var)) type = "unsigned long long";
else if (typeid(float) == typeid(_var)) type = "float";
else if (typeid(double) == typeid(_var)) type = "double";
else if (typeid(long double) == typeid(_var)) type = "long double";
return type;
}
Другие языки программирования и технологии
C++. Можно сделать так, что бы тип переменной определялся сам? (Калькулятор) ...
Элементарно. Если он ввел с точкой или буквой е - это double. Если без - int. Смотри правила записи значений чисел в C++ :)
P.S. Пользователь, 435232 - это целый тип. Разумеется, при необходимости он будет приведен к double автоматически.
P.P.S. "Мне надо что бы программа это определила :D"
Так программа по виду введенного значения и определяет сама. Если хочешь узнать, какой тип был введен - по тому, что введено, и определяй, есть во введенном точка или буква или нет.. . Вводишь строку, анализируешь и переводишь в число нужного типа.
P.S. Пользователь, 435232 - это целый тип. Разумеется, при необходимости он будет приведен к double автоматически.
P.P.S. "Мне надо что бы программа это определила :D"
Так программа по виду введенного значения и определяет сама. Если хочешь узнать, какой тип был введен - по тому, что введено, и определяй, есть во введенном точка или буква или нет.. . Вводишь строку, анализируешь и переводишь в число нужного типа.
C++ отличается тем, что в нем можно ВСЕ. Например, написать свой клас с преобразованиями во все нужные типы. Но не думаю, что тебе нужно именно это. Попробуй описать немного подробнее, что именно нужно - будет более точный ответ. Может, шаблонов хватит.
---
Ввод - это всегда поток байт; можно сказать, строка. Интерпретировать эту строку как int или float - это вопрос только и исключительно программиста.
А вообще - вводи float и не морочь себе голову. Почти никогда и никому не нужно целочисленное деление в калькуляторе.
---
Ввод - это всегда поток байт; можно сказать, строка. Интерпретировать эту строку как int или float - это вопрос только и исключительно программиста.
А вообще - вводи float и не морочь себе голову. Почти никогда и никому не нужно целочисленное деление в калькуляторе.
в любом случае каждая переменная имеет свой указатель и свой тип.
по голому числу 425232 нельзя понять к какому типу оно относится. это может быть все что угодно.
по голому числу 425232 нельзя понять к какому типу оно относится. это может быть все что угодно.
Зачем определять?
Сделай три переменные типа float или double, а с ними делай, что хочешь.
Даже если пользователь введет целые числа - что, целые числа нельзя что ли хранить во float к примеру?
Сделай три переменные типа float или double, а с ними делай, что хочешь.
Даже если пользователь введет целые числа - что, целые числа нельзя что ли хранить во float к примеру?
перегруженные функции попробуй или проверку вводимых чисел.
Похожие вопросы
- C#. Как сделать, чтобы программа проверяла тип введённой переменной?
- Вопрос по типам переменных С++ и Pascal
- Как правильней сменить тип переменной ?
- С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?)
- Помогите с программой по языку Pascal, задание на записи (комбинированный тип переменной).
- [C++] Зачем динамически выделять память под 1 переменную?
- Спецификаторы типов переменных
- C# Как сделать сохранение игры и запуск сохраненной игры?
- Определить тип переменных b: integer:
- Как онулировать тип переменной char например был lol[3]="cok" а стал просто lol[3]?