Форум программистов, компьютерный форум CyberForum.ru

Как проверить, что находится в переменной? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
xTIGRx
 Аватар для xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,169
Записей в блоге: 1
09.08.2013, 13:53     Как проверить, что находится в переменной? #1
Недавно возник вопрос...как проверить через инструкцию if какое значение находится в переменой, числовое или текстовое??

допустим такой код

int a=0;
if(a==int) ....

понятное дело что код не рабочий который опысан выше, я его написал чтобы изложить суть моего вопроса, так вот есть ли в С что то подобное, чтобы проверить переменную к какому типо он отностися...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2013, 13:53     Как проверить, что находится в переменной?
Посмотрите здесь:

C++ Как проверить что в переменной char хранится число?
C++ Проверить что в массиве минимальное значение находится раньше максимального
Проверить, что найденная фраза находится внутри кавычек C++
C++ Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе?
Как правильно посмотреть, что находится в массиве пикселей в понятном виде? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
09.08.2013, 16:05     Как проверить, что находится в переменной?
  #21

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
Слайды 6-7)
То, что выражается не естественным языком - низкий уровень

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xTIGRx
 Аватар для xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,169
Записей в блоге: 1
09.08.2013, 18:20  [ТС]     Как проверить, что находится в переменной? #22
Цитата Сообщение от Tulosba Посмотреть сообщение
Язык C++, как и язык C, строго типизированный. Нельзя в целочисленную переменную записать что-то, что не является целым числом.
это понятно, вопрос мой был в том как проверку осуществить. другими словами.

создаем переменную int a=0;
делаем проверку если в переменную int присваивается не целочисленное значение то программа закрывается(не могу осуществить это)
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 18:21     Как проверить, что находится в переменной? #23
Цитата Сообщение от GoldDragon Посмотреть сообщение
создаем переменную int a=0;
делаем проверку если в переменную int присваивается не целочисленное значение то программа закрывается(не могу осуществить это)
Ты занимаешь чепухой. Это выглядит так, будто ты не знаешь элементарных основ.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
09.08.2013, 18:27     Как проверить, что находится в переменной? #24
Цитата Сообщение от GoldDragon Посмотреть сообщение
если в переменную int присваивается не целочисленное значение
О_о Напиши когда провернёшь этот трюк...
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.08.2013, 18:29     Как проверить, что находится в переменной? #25
Цитата Сообщение от GoldDragon Посмотреть сообщение
если в переменную int присваивается не целочисленное значение то программа закрывается
если в переменную int присваивается не целочисленное значение (которое не может быть преобразовано в целочисленное), то программа просто не скомпилируется.
О каких-либо проверках можно говорить, если, скажем, пользователь вводит с клавиатуры что-то вместо числа, там где ожидается число. Но это уже совсем другая история.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
09.08.2013, 18:42     Как проверить, что находится в переменной? #26
GoldDragon, ты говоришь ерунду. и такое чувство, что ставишь вопрос вообще не о том. Вот если бы ты спросил "как заставить пользователя вводить с клавиатуры только целые числа", все бы тебя поняли.
А пока что тема выглядит как-то странно. Все тебя пытаются убедить, что в переменных int не хранится ничего кроме целых чисел, а ты возражаешь!
xTIGRx
 Аватар для xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,169
Записей в блоге: 1
09.08.2013, 21:19  [ТС]     Как проверить, что находится в переменной? #27
все вопрос решен, нашел на нашем форуме подобную тему. впредь буду внимательнее прежде чем создавать дубли).спасибо всем
Tulosba
09.08.2013, 22:04
  #28

Не по теме:

Цитата Сообщение от GoldDragon Посмотреть сообщение
все вопрос решен, нашел на нашем форуме подобную тему.
И как же там вопрос решен?

fatalis
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
09.08.2013, 23:06     Как проверить, что находится в переменной? #29
C++
1
2
3
4
5
6
7
8
9
10
template<class T,class V> auto ff(T a,V b)->decltype(a+b)
{
    return a+b;
}
int main(int argc, const char * argv[])
{
    auto i=ff(5,6.5);
    cout<<i;
    return 0;
}
У нас есть переменная i,но мы все же не знаем ее тип.

Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class SimpleClassB
{
public:
    int b;
    SimpleClassB(int x):b(x){};
};
class SimpleClassA
{
public:
    int a;
    SimpleClassA(int x):a(x){};
    friend SimpleClassA operator+(const SimpleClassA& a,const SimpleClassB& b);
};
SimpleClassA operator+(const SimpleClassA& a,const SimpleClassB& b)
{
    return SimpleClassA(rand());
}
template<class T,class V> auto ff(T a,V b)->decltype(a+b)
{
    return a+b;
}
 
int main(int argc, const char * argv[])
{
    SimpleClassA t1(5);
    SimpleClassB t2(7);
    auto i=ff(t1,t2);
    cout<<typeid(i).name();
    return 0;
}
Тогда помогает typeid(уже было написано в топике)
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.08.2013, 00:17     Как проверить, что находится в переменной? #30
Цитата Сообщение от fatalis Посмотреть сообщение
У нас есть переменная i,но мы все же не знаем ее тип.
Тип известен на момент компиляции. В обоих случаях.
fatalis
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
10.08.2013, 00:57     Как проверить, что находится в переменной? #31
C++ статически типизированный ЯП,иного и не ожидалось) Я просто привел случай(возможно,не самый лучший),когда использование typeid может быть полезно.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
10.08.2013, 01:00     Как проверить, что находится в переменной? #32
Цитата Сообщение от fatalis Посмотреть сообщение
когда использование typeid может быть полезно.
Ну в данном случае это бесполезно, т.к.
Цитата Сообщение от Tulosba Посмотреть сообщение
Тип известен на момент компиляции.
Не для этого придумывали RTTI
fatalis
8 / 8 / 1
Регистрация: 09.08.2013
Сообщений: 68
10.08.2013, 01:14     Как проверить, что находится в переменной? #33
А где еще RTTI используется кроме как dynamic_cast? С этой темой абсолютно не знаком,хотелось бы прочитать что-то,можете скинуть несколько ссылок?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2013, 01:26     Как проверить, что находится в переменной?
Еще ссылки по теме:

C++ Как проверить успешность создания динамической переменной?
Как проверить размер чаровской переменной именно в битах C++
Как проверить что к переменной прибавилось более чем X C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
10.08.2013, 01:26     Как проверить, что находится в переменной? #34
Например вот:
The typeid operator (C++ only)
C++ Typecasting Part 1
C++ Typecasting Part 1

Ну и еще:
rtti
Чем отличаются dynamic_cast и static_cast?
Идентификация типа во время исполнения (RTTI)
Применение наследования в C++
Yandex
Объявления
10.08.2013, 01:26     Как проверить, что находится в переменной?
Ответ Создать тему
Опции темы

Текущее время: 18:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru