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

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

Войти
Регистрация
Восстановить пароль
 
cflood
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 37
#1

Unary minus operator applied to unsigned type, result still unsigned - C++

26.06.2013, 15:19. Просмотров 522. Ответов 4
Метки нет (Все метки)

Подскажите, имеем следующий код:

Кликните здесь для просмотра всего текста

C++
1
2
3
signed int a = -0x80000000;
signed int b = -1;
signed int c = (a / b);


В итоге компилятор выдаёт "unary minus operator applied to unsigned type, result still unsigned", разжуйте пожалуйста почему это происходит. Может быть что 0x80000000 - предел для int? и надо попробовать число поменьше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2013, 15:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Unary minus operator applied to unsigned type, result still unsigned (C++):

Convert std::streamoff to unsigned type from cstdint - C++
Всем привет! Задача: передать размер файла по сети. Как это правильно делается? Размер узнаю так: file.seekg(0,...

char operator[](unsigned short offset) const; // что означает const? - C++
Собстенно вопрос уже озвучен :).

Приведение типов unsigned char[2] to unsigned char [64] - C++
Добрый день! Подскажите пожалуйста, как поступить. Есть простая функция main int main() { SHA1Context sha; uint8_t...

Не понятный undefined reference to `unsigned long long f<unsigned long long, void> - C++
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename std::enable_if&lt;std::is_same&lt;FormalType,...

Как исправить ошибку невозможно преобразовать аргумент 1 из "unsigned int" в "unsigned int []"? - C++
Ребят, срочно прошу вас помочь.. Есть ошибка (невозможно преобразовать аргумент 1 из &quot;unsigned int&quot; в &quot;unsigned int &quot;) как ее...

Разница int, short, unsigned int, unsigned short - C++
Есть например цикл который проходит по массиву в котором 100 элементов. В чем практическая выгода и разница в истоьзовании типов short,...

4
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2013, 16:22 #2
Цитата Сообщение от cflood Посмотреть сообщение
Может быть что 0x80000000 - предел для int? и надо попробовать число поменьше.
Может быть...

Добавлено через 36 минут
Старший разряд занят, поэтому некуда поместить знак числа. Получается, что максимально число, к которому можно применить унарный минус (в 32 разрядных системах): 0x7FFFFFFF.
1
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 170
03.08.2014, 07:52 #3
0-0x80000000 = -0x7FFFFFFF-1
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,189
03.08.2014, 08:10 #4
Цитата Сообщение от cflood Посмотреть сообщение
signed int a = -0x80000000;
а теперь посмотри что происходит
для того чтобы поменять знак числа нужно перевести его в дополнительный код
т.е инвертировать все биты и добавить 1
~0x80000000= 0x7FFFFFFF
0x7FFFFFFF+1=0x80000000
от чего ушли к тому и пришли
0
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 170
03.08.2014, 08:18 #5
Так, что надо просто написать 0-0x80000000 раз без бинарного минуса не обойтись, столкнулся с этой ошибкой когда пытался привести __int64 к __int32 c проверкой на потерю данных. Оказалось, что числа 0xF.. считаются без знаковыми (даже если приписать signed перед ними в скобочках) и сравнение идёт не так как планировалось, а написав то, что и вы -0x80000000 получил ошибку.
0
03.08.2014, 08:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2014, 08:18
Привет! Вот еще темы с ответами:

Signed/Unsigned - C++
Здравствуйте! Стал изучать ЯП C. Не совсем могу понять, что означает Signed и Unsigned (как я понял означает наличие знака(+ либо -) или...

unsigned на плюсах - C++
unsigned на плюсах, помогите разобраться, когда её нужно юзать, а когда нет) та и для чего она впринцепе)

Unsigned long в с++ - C++
Помогите пожалуйста реализовать операции возведение в степень, извлечение корня и операцию % с типом Unsigned long.

Hex в unsigned char - C++
Здравствуйте! У меня есть одна проблема, которую не могу решить, ну вот, у меня есть файл в нем hex строка, такого вида: 68 65 6c 6c 6f...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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