![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Iron Bug |
![]()
Сообщение
#1
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Наступила тут на интересные грабли в GCC.
Проверка работы с граничными значениями int64 выявила, что GCC на такую строку
выдаёт ворнинг, что число слишком большое, и может быть сохранено только как uint64_t. Хотя формально всё валидно. Нашла объяснение тут: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55540 Это не баг, это фича. Просто GCC воспринимает число -X, как X, к которому применён унарный оператор минус. А в данном случае +9223372036854775808 действительно выходит за пределы int64_t и он не может с ним работать. Вот такой простой трюк позволяет обойти эту странность:
И компилятор доволен ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 20.6.2025, 14:01 |