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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.64
movsesiv
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 9
#1

Разница между char и signed char - C++

06.07.2012, 18:34. Просмотров 6433. Ответов 22
Метки нет (Все метки)

Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый.
Не комплилируется следующий фрагмент кода:
C++
1
2
3
4
5
6
void f(char&){}
int main(){
signed char sc;
f(sc);
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница между char и signed char (C++):

В чем разница между char* и char[]? - C++
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

В чем разница между char* и char ** - C++
в чем разница между char* и char ** ??

Разница между new char[] и new char[]() - C++
Доброго времени суток. Подскажите пожалуйста разницу, между следующим кодом: char* ch = new char; и char* ch = new...

Разница между char и int - C++
Известно что для чар выделяется 1 байт (8 бит) для инт 4 байта (32 бита). Так почему нельзя в чар присвоить 10 и больше до 255 в виде...

Значения типов данных (signed, unsigned, char) - C++
Програмирую я месяца два,но не понимаю значения типов данных : signed, unsigned, char...Помогите..

Тип char.Signed/unsigned.Отличие типов данных. - C++
Вопрос немного может быть не туда... Прошу прощения. Пишу прошивку к контроллеру, на С. Интересует отличие типов данных. ДОпустим есть тип...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17815 / 6025 / 388
Регистрация: 30.03.2009
Сообщений: 16,554
Записей в блоге: 26
07.07.2012, 20:01 #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Может я и ошибаюся, но мне кажется, что isdigit() нужен unsigned int и не больше 255
В спецификации написано, что параметр типа int. Т.е. значения от 0 до 255. А потому для знакового char'а при таком раскладе должно каосячить
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2012, 04:20 #17
Цитата Сообщение от Evg Посмотреть сообщение
параметр типа int. Т.е. значения от 0 до 255
Вот этого не понимаю! Разве int - это от 0 до 255?
0
Evg
Эксперт CАвтор FAQ
17815 / 6025 / 388
Регистрация: 30.03.2009
Сообщений: 16,554
Записей в блоге: 26
08.07.2012, 10:29 #18
Цитата Сообщение от alsav22 Посмотреть сообщение
Разве int - это от 0 до 255?
А с учётом всяких юникодов разве диапазон входных значений от 0 до 255?
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2012, 10:36 #19
Цитата Сообщение от Evg Посмотреть сообщение
А с учётом всяких юникодов разве диапазон входных значений от 0 до 255?
Я не про Юникод, а про int и isdigit().
В спецификации написано, что параметр типа int. Т.е. значения от 0 до 255.
Зачем int, если isdigit() может обработать только от 0 до 255? Почему не написать в спецификации, что параметр типа unsigned char?
0
Evg
Эксперт CАвтор FAQ
17815 / 6025 / 388
Регистрация: 30.03.2009
Сообщений: 16,554
Записей в блоге: 26
08.07.2012, 10:50 #20
Цитата Сообщение от alsav22 Посмотреть сообщение
Почему не написать в спецификации, что параметр типа unsigned char?
Напиши. Я тебе объяснил возможную логику, которой руководствовались те, кто это дело проектировал. А сейчас махать руками и кричать "почему сделали так, а не эдак" никакого смысла не имеет. Я со всякими юникодами и прочими не работал, но, возможно, что эти интерфейсы и сейчас воспринимают больше, чем диапазон от 0 до 255

Добавлено через 5 минут
Как оно в glibc реализовано - см. тут
http://sourceware.org/git/?p=glibc.g...b04ea4;hb=HEAD

Надо это немного вкурить и понять, оно уже включает в себя всякие расширенные кодировки или нет
1
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.07.2012, 11:00 #21
Цитата Сообщение от Evg Посмотреть сообщение
Как оно в glibc реализовано - см. тут
http://sourceware.org/git/?p=glibc.g...b04ea4;hb=HEAD
Не для новичка.
0
g_u_e_s_t
1258 / 649 / 30
Регистрация: 06.02.2011
Сообщений: 1,724
08.07.2012, 11:06 #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем int, если isdigit() может обработать только от 0 до 255? Почему не написать в спецификации, что параметр типа unsigned char?
кроме 0...255 все isXXX() должны уметь еще и EOF обрабатывать.
2
Evg
Эксперт CАвтор FAQ
17815 / 6025 / 388
Регистрация: 30.03.2009
Сообщений: 16,554
Записей в блоге: 26
08.07.2012, 12:51 #23
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
кроме 0...255 все isXXX() должны уметь еще и EOF обрабатывать.
Как всё просто. Причём в обычном man'е чёрным по белому всё написано
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2012, 12:51
Привет! Вот еще темы с ответами:

Надо перевести переменную типа unsigned char* в signed int и обратно - C++
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее...

8-битовый тип signed char может представлять значения от -128 до 127 - C++
8-битовый тип signed char может представлять значения от -128 до 127 Кто может растолковать как это понимать, от 128 до 127 -...

char и char* разница - C++
Привет всем:) Изучаю С++ и вот застрял на задании где надо удалить символ из входного потока. В гугле нашел вот такое код( смотрите ниже...

Как понять следующую запись (signed char const ix(delta_x > 0) - (delta_x < 0)? - C++
Всем привет! В принципе, название говорит само за себя. Хотелось бы понять, почему используется такой синтаксис и что он вообще...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.07.2012, 12:51
Ответ Создать тему
Опции темы

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