![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
возможно, глупый вопрос
почему strtol("0xffffffff80000000", NULL, 16) возвращает LONG_MAX? в мане написано, что LONG_MAX возвращается при переполнении но у меня то указана СС по основанию 16, а там по определению не может быть префиксов '-' и '+' система 64-х битная компилятор GCC 4.3 libc-2.8 Это сообщение отредактировал(а) MAKCim - 18.9.2008, 23:03 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
MAKCim, То число, которое ты привел в примере, оно больше чем LONG_MAX.
-------------------- Пролетал мимо. |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Ещё есть функция strtoul. Это сообщение отредактировал(а) 586 - 18.9.2008, 23:48 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
это число отрицательное вполне себе валидный long Это сообщение отредактировал(а) MAKCim - 18.9.2008, 23:53 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 2 Всего: 7 |
Или я чо-то не догоняю, или long - это 4 байта, т.е. максимум 8 символов в хексе.
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
я подозеваю что у вас long 4-х байтный
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Rpahut,
J0ker, По внимательней читайте. Добавлено через 26 секунд -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
я прочитал битность компилятора (и библиотек) от битности платформы не зависит вполне возможно вы компилите 32-х битное приложение UPD: на 32bit платформе о же самое проверяю чуть позже напишу в чем дело UPD: man "When the value of the base is 16 (hexadecimal), the expected form of the subject sequence is a string of alphanumeric characters optionally preceded by charac- ters "0x" or "0X", which must follow an optional ini- tial sign character, when present." на hex распрстаняются те же правила что и на десятичные - значения больше 0x7FFFFFFF(FFFFFFFF - for 64bit) - интерпретируются как положительные Это сообщение отредактировал(а) J0ker - 19.9.2008, 01:57 |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Исходное число положительное и в 64-хбитном long оно не представимо. Отрицательные числа идут лесом, т.к. семантически они не то же самое, что положительные числа, которые путём манипуляций с бинарным представлением можно переводить друг в друга. Поэтому поведение strtol вполне адекватное. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
исходное число отрицательное и вполне представимо через long, потому как это и есть long у нас СС = 16 вот ежели я бы написал +9223372036854775808 или -9223372036854775807 это было бы вполне очевидное переполнение знакового long я то конечно полнял логику strtol(), но она абсолютно неправильная имхо Это сообщение отредактировал(а) MAKCim - 19.9.2008, 09:06 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
strtol выдет ЗНАКОВЫЙ long, и ей абсолютно по барабану в какой системе счисления он записан (хоть в 32х ричной man strtol:
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
xvr,
ну 0xffffffff80000000 знаковый же -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
По-твоему, ffffffff80000000 - это в 16-ичной системе счисления отрицательное число? Вот именно, что тут система счисления в математическом смысле, а не 16-значный код, соответствующий бинарному представлению long. Добавлено через 2 минуты и 39 секунд
И чем же это 16-ичная позиционная система счисления хуже десятичной? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
А как по-твоему целые отрицательные числа представлены в памяти? Это сообщение отредактировал(а) W4FhLF - 19.9.2008, 13:24 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
знак зашит в разряде причем его можно определить без '+' и '-' -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |