![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
666TEHb666 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 5.10.2008 Где: Новокузнецк Репутация: нет Всего: нет |
Начал экспериментировать со встроенными типами данных и натолкнулся на одну непонятную мне вещь.Разъясните, пожалуйста.
Суть в том,что при указании unsigned short для переменной все нормально. При превышении диапазона отсчет значений начинается заново,с нуля.При нарушении нижней границы( -1,-2 и т.д.) отсчет начинается с максимального значения(65535 и т.д.). Но эта вполне логическая зависимость не работает для unsigned int и unsigned long. При вводе -1 консоль выводит -1 и т.д. При нарушении верхней границы диапазона отсчет значений начинается заново с отрицательных чисел...Если не ошибаюсь unsigned long предусматривает беззнаковое длинное целое.Так почему же хранит и отображает отрицательные числа? Это сообщение отредактировал(а) 666TEHb666 - 25.10.2008, 21:46 |
|||
|
||||
KEHT |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 17.7.2006 Репутация: нет Всего: 1 |
Чем компилировали?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
signed/unsigned, скорее указывает, как интерпретировать последовательность бит, хранимую в переменной
значениям signed int -1 и unsiged int 2^32-1 соответствуют одинаковые битовые последовательности и при приведении к другому типу они будут переходить друг в друга так что, как такового хранения знаковых или беззнаковых чисел не происходит - хранятся битовые последовательности, а их интерпретация зависит от типа то, что при передаче unsigned выводятся отрицательные числа, скорее всего, означает, что внутри происходит приведение к signed int в случае с unsigned short старшая половина int просто заполняется нулями, так чт выводится правильно в случае с signed short старшая половина int заполняертся старшим битом числа а вот в случае с unsigned int просто происходит приведение, которое переводит (2^32-1) в -1 это я всё к чему? код в вывода студию ![]() -------------------- qqq |
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
# 4294967295 0 Можно ваш ехе-шник поглядеть? |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
я думаю чел это делает через printf с типом формата d
![]() |
|||
|
||||
666TEHb666 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 5.10.2008 Где: Новокузнецк Репутация: нет Всего: нет |
J0ker,вы правы,через него и делаю))
... unsigned val=-1; printf("%4d",val); ... Дело в том,что Си я только начал изучать,до этого учился на Паскале и для меня подобные манипуляции с типами пока плохо усваиваются.Для того и обращаюсь к вам за помощью.Вся ошибка в неправильной(для данной ситуации) функции вывода?Я правильно понял?Она автоматически переводит unsigned int в signed? KEHT,компилировал в Visual Studio 2005 Express Edition. triclosan,думаю экзешник уже не понадобится),но спасибо за помощь Это сообщение отредактировал(а) 666TEHb666 - 26.10.2008, 00:07 |
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
%u
|
|||
|
||||
666TEHb666 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 5.10.2008 Где: Новокузнецк Репутация: нет Всего: нет |
Благодарю,разобрался))Вопрос решен
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |