0 / 0 / 1
Регистрация: 16.10.2014
Сообщений: 72
1

Как использовать символьный тип данных с типом int?

02.11.2014, 05:26. Показов 1111. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как использовать символьный тип данных с типом int?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2014, 05:26
Ответы с готовыми решениями:

Перечисляемый тип данных.Символьный тип.
1.type месяц = ( янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек ); год = (високосный,...

Как создать функцию, которая определит с каким типом данных ей работать и подстроиться под этот тип?
например если мне нужно создать шаблон функции сортировки одномерных массивов произвольного типа)))

Символьный тип данных
я вот знаю типы int, double, float. Но все они используются для чисел. Какой тип используется для...

Символьный тип данных
Символьный тип данных Введите массив символов из 7 элементов. Определите, является ли он ...

8
10 / 10 / 7
Регистрация: 03.02.2014
Сообщений: 205
02.11.2014, 05:38 2
А несколько конкретней вопрос сформулировать можно?
0
0 / 0 / 1
Регистрация: 16.10.2014
Сообщений: 72
02.11.2014, 06:24  [ТС] 3
Что такое символьный тип данных? Как его использовать и какова его связь с типом int?
0
10 / 10 / 7
Регистрация: 03.02.2014
Сообщений: 205
02.11.2014, 07:08 4
С символьным типом данных можно работать как с числами, да и представляет он здесь ни что иное как однобайтовое число (-128 - 127 в знаковом виде и 0 - 255 в беззнаковом)
В качестве примера: 'a'+1 = 'b', 'h'-'a'+'A'='H'.
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
02.11.2014, 08:56 5
В языках С и С++ нет никакого "символьного типа" как такового. Для представления символов используется тип 'char', который является обыкновенным целочисленным типом, таким же как и 'short', 'int' и т.п. Поэтому никаких из ряда вон выходящих особенностей при использовании с 'int' у этого типа нет - просто бери и используй.

Особенностями типов группы 'char' является то, что тип 'char' может быть как знаковым, так и беззнаковым (определяется реализацией). При этом 'char', 'signed char' и 'unsigned char' всегда являются тремя разными типами, т.е. с точки зрения языковой типизации тип 'char' не является синонимом типа 'signed char' даже если тип 'char' является знаковым.
0
10 / 10 / 7
Регистрация: 03.02.2014
Сообщений: 205
02.11.2014, 09:00 6
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
с точки зрения языковой типизации тип 'char' не является синонимом типа 'signed char'
Так, а можно, пожалуйста, здесь немножко поподробней? По факту, при работе с символами (на том довольно низком уровне, с которым мне доводилось сталкиваться) разницы не было никакой, одно можно было заменить другим и наоборот. Где кроется подвох?
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
02.11.2014, 09:06 7
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
одно можно было заменить другим и наоборот. Где кроется подвох?
"Подвоха" тут никакого нет. Если тип 'char' является знаковым, то по физическому представлению он точно совпадает с типом 'signed char'. Это гарантируется языком.

Но тем не на уровне языка это все равно будут два разных типа. Например, вот такой код

C++
1
2
char c = 0;
signed char *p = &c;
не скомпилируется из-за несоответствия типов указателей. В тоже время вот такой код

C++
1
2
int i = 0;
signed int *p = &i;
скомпилируется без проблем, ибо для всех остальных целочисленных типов 'signed T' является синонимом просто 'T'.

Если же преобразовать указатель 'char *' к типу 'signed char *' при помощи явного каста, то далее все будет работать правильно, ибо, как я уже сказал выше, язык гарантирует 100% совместимость физических представлений.
0
10 / 10 / 7
Регистрация: 03.02.2014
Сообщений: 205
02.11.2014, 09:13 8
Раз совместимость представлений гарантирована языком, то почему не реализовано автоматическое приведение signed char к просто char? Тем более, что это уже сделано для других целочисленных типов, как вы уже и сказали. Тут есть какой-то смысл или это просто пробел, на который все забили?
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
02.11.2014, 09:23 9
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
автоматическое приведение signed char к просто char
Неявное преобразование 'signed char' к 'char' разумеется есть, как и для любых целочисленных типов. Но для данного примера нужно приведение 'signed char *' к 'char *'. А это совсем другая история. Как я сказал ранее, тип 'char' может быть знаковым или беззнаковым. Именно поэтому на уровне языка его держат особняком от 'signed char' и 'unsigned char'.

Цитата Сообщение от Werewolf_RU Посмотреть сообщение
Тем более, что это уже сделано для других целочисленных типов,
Нет, нет, нет, для других целочисленных типов не делается никакого "приведения". Для других целочисленных типов 'signed' не создает нового типа вообще. Например 'int' и 'signed int' - это один и тот же тип. Поэтому указатель 'int *' и указатель 'signed int *' - это тоже один и тот же тип. Никакого "приведения" между ними нет и не нужно.
1
02.11.2014, 09:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2014, 09:23
Помогаю со студенческими работами здесь

символьный тип данных
Как инициализировать переменную символьного(char) типа словом(например "привет")???

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

Реализовать выведение данных с типом float, вместо int
Здравствуйте, мне нужна помощь с переделыванием этого кода, чтобы в конечном массиве могли выходить...

Символьный тип данных и русские символы
Почему в if возвращается 0? char s; cin >> s; // вводим с клавиатуры ф if(s=='ф') cout << s...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru