Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 0
Регистрация: 01.08.2008
Сообщений: 65
1

Как запретить компилятору неявное преобразование из числового типа в символьный?

09.08.2008, 23:29. Просмотров 2132. Ответов 6
Метки нет (Все метки)

У мя возникла такая проблема: я ввожу данные типа char и мне надо быть уверенным, что я ввел именно символ, т.е. если я ввожу число мне нужно об этом как-то узнать...это было бы легко сделать, если запретить компилятору преобразовывать из числового типа в символьный. Это реально сделать и как? Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2008, 23:29
Ответы с готовыми решениями:

Неявное преобразование типа int в bool. Как исправить?
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Преобразование типов из числового в символьный
Согласно заданию лабораторной работы, мне необходимо написать программу на языке си, реализующую...

Неявное преобразование типа
Привет. Решаю задачу, не могу решить проблему. Есть класс 'time' и производный от него класс...

Обобщения. Неявное преобразование типа невозможно
Вылетает ошибка: Неявное преобразование типа "T " в "T" невозможно. Почему так нельзя? ...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
6
Эксперт С++
2250 / 765 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
10.08.2008, 00:11 2
Думаю,проблема не в этом. Цифра есть символ. Попробуйте оспорить.
Как следствие того,что цифра - символ,компилятор ничего не преобразовывает.
Проверить,является ли символ цифрой - очень просто.
Код
сhar c;
cin >> c;
if ( (c>='0') && c <='9') ; // введена цифра.
else ; //введена не цифра
0
295 / 55 / 5
Регистрация: 22.05.2008
Сообщений: 788
10.08.2008, 00:54 3
а еще есть функции itoa() и atoi(). собссно переводят из целых чисел в строки и наоборот. вот только я забыл какой хедер нужен
0
3 / 3 / 0
Регистрация: 01.08.2008
Сообщений: 65
10.08.2008, 01:03  [ТС] 4
Мне просто надо отследить ошибку ввода, если я вместо символа введу например 2-х значное число, то cin.good() не реагирует..
0
295 / 55 / 5
Регистрация: 22.05.2008
Сообщений: 788
10.08.2008, 01:17 5
сhar c;
cin >> c;
if ( (c>='0') && c <='9') ; // введена цифра.
else ; //введена не цифра
тут же в таблице аски кодов 0,1,2....9 идут подряд. выходит за эти рамки - не цифра. просто проверка условия и всё
0
93 / 2 / 0
Регистрация: 12.06.2008
Сообщений: 84
10.08.2008, 14:33 6
Ещё можно заметит закономерность того, что при приведении какого либо символа к целочисленному типу, он возвращает отрицательное число.
Следовательно:
C++
1
2
3
4
5
6
7
char x;
cin >> x;
if(((int)x) > 0)
{
cout << "Вы ввели не символ!\n";
return main();
}
Полный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
    char x;
    std::cin >> x;
    if(((int)x) > 0)
    {
        std::cout << "Вы ввели не символ!\n";
        return main();
    }
    else
    {
        std::cout << x << "\n";
    }
    return 0;
}
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
10.08.2008, 15:06 7
Это утверждение неверно.
Во-первых, символы английского алфавита, цифры, знаки препинания и т.д. имеют ASCII-коды в диапазоне 0x00-0x7F, и эти символы при приведении к int всегда будут давать положительное число. А вот с символами в диапазоне 0x80-0xFF (буквы русского алфавита и разные спецсимволы) все хитрее - зависит от опции default char type - signed или unsigned. Если по умолчанию символьный тип беззнаковый, то и эти символы будут всегда давать положительное число. А вот если знаковый - то отрицательное.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2008, 15:06

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Неявное преобразование типа данных через структуры
Помню что вроде был в С/С++ такой прием, который позволял посмотреть на содержимое переменной...

Быстрое преобразование Фурье и ошибка "Неявное преобразование типа"
А подскажите еще по одной прблемке: Есть программа реализующая БПФ (ну должна по крайней мере это...

Что значит неявное преобразование типа string[] в char[] невозможно?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Неявное преобразование типа int в bool невозможно. Код прилагается
Неявное преобразование типа int в bool невозможно. Помогите пожалуйста! Код: using System; ...

Неявное преобразование типа данных date в int недопустимо - проблемы с кавычками
При таком варианте, ругается на 17-ю строку USE IPK GO DECLARE @org int, @sheet int, @dat...

Ошибка при сборке: Неявное преобразование типа 'string' в 'System.Windows.Forms.DataGridViewTextBoxColumn'
Работаю в SharpDevelop 4.4. При сборке проекта вылазит ошибка: &quot;Неявное преобразование типа...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.