![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Здравствуйте, программисты. Когда я использую char, то отводится ли у меня один бит под знак? И как объяснить такое?
![]()
На консоль выводится 8! Премного благодарен. |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
unsigned - число без знака. Занимает 1 байт, соотв диапозон значений 0,,FF
signed - число со знаком, соотв диапозон значений -7F..7F - следовательно отводится, но char по прежнему занимает 1 байт. Второй вопрос: вы сделали явное приведение типов, вот и выводится 8 Добавлено через 2 минуты и 21 секунду << - на самом деле, операция помещения в поток. Она определена так, что если в поток помещать значение типа char, будет отображен символ, если тип int - то будет выведено число, что вы и наблюдаете -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
rodnover |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
число 8, что в unsigned char, что в char представляется одинаковой последовательностью битов (00001000)
Это сообщение отредактировал(а) rodnover - 17.8.2011, 18:49 |
|||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Но почему выводится 8, а не 10?
|
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
oct 10 = dec 8
Добавлено @ 19:28 char c = \10 - значение в восьмеричной системе счисления char c=\x10 - в шестнадцатеричной Это сообщение отредактировал(а) Чoо - 17.8.2011, 19:37 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
voral |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
а если '/11' будет 9
а если '/07' будет 7 а если '/08' будет ругаться компилер Ибо сие есть восьмиричная система Ну вот опередили...... ![]() Это сообщение отредактировал(а) voral - 17.8.2011, 19:33 |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
чуть поправил там опечатку.. было dec10=oct8
![]() -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
rodnover |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
Если надо присвоить 10 сделай так:
Для справки можно сделать так:
Это сообщение отредактировал(а) rodnover - 17.8.2011, 19:42 |
||||
|
|||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
![]() |
|||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
А-а, тут программист указывает 8-ричное число изначально
![]() ?001010? Левый или правый бит выделится под минус? |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
выделяется "левый"
Добавлено через 22 секунды думаю правильней - старший бит -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Hagrael |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 26.6.2011 Репутация: нет Всего: нет |
Википедия, да еще и на английском о_О Не осилю. Если вам нетрудно, mes, скажите, что вы имели в виду под словами "никакой".
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
так в этом случае какое перед нами число мы судим по самому старшему биту.. так-то 11110110 может быть равно и 246 Это сообщение отредактировал(а) Чoо - 18.8.2011, 12:03 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |