Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
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. Просмотров 491. Ответов 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? и надо попробовать число поменьше.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2013, 15:19     Unary minus operator applied to unsigned type, result still unsigned
Посмотрите здесь:

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

Приведение типов 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,...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.06.2013, 16:22     Unary minus operator applied to unsigned type, result still unsigned #2
Цитата Сообщение от cflood Посмотреть сообщение
Может быть что 0x80000000 - предел для int? и надо попробовать число поменьше.
Может быть...

Добавлено через 36 минут
Старший разряд занят, поэтому некуда поместить знак числа. Получается, что максимально число, к которому можно применить унарный минус (в 32 разрядных системах): 0x7FFFFFFF.
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 167
03.08.2014, 07:52     Unary minus operator applied to unsigned type, result still unsigned #3
0-0x80000000 = -0x7FFFFFFF-1
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,737
03.08.2014, 08:10     Unary minus operator applied to unsigned type, result still unsigned #4
Цитата Сообщение от cflood Посмотреть сообщение
signed int a = -0x80000000;
а теперь посмотри что происходит
для того чтобы поменять знак числа нужно перевести его в дополнительный код
т.е инвертировать все биты и добавить 1
~0x80000000= 0x7FFFFFFF
0x7FFFFFFF+1=0x80000000
от чего ушли к тому и пришли
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2014, 08:18     Unary minus operator applied to unsigned type, result still unsigned
Еще ссылки по теме:

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

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

Unsigned char to vector - C++
{ vector&lt;byte&gt; resBuffer; unsigned char buffer; //string reply; //Receive a reply from the server if(...

Unsigned integer 24 bit - C++
Как можно объявить беззнаковый integer размером в 24 бита? Если я объявлю его как битовое поле в структуре, например так: struct...

что за тип unsigned? - C++
srand((unsigned)time(NULL)); приведенеие типов. а что за тип такой? целый?:scratch:

Сложение int и unsigned - C++
Всем привет. Есть код в котором складывается int и unsigned. unsigned u=10; int i=-42; cout&lt;&lt;u+i&lt;&lt;endl; Вопрос: ответ будет...


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

Или воспользуйтесь поиском по форуму:
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 167
03.08.2014, 08:18     Unary minus operator applied to unsigned type, result still unsigned #5
Так, что надо просто написать 0-0x80000000 раз без бинарного минуса не обойтись, столкнулся с этой ошибкой когда пытался привести __int64 к __int32 c проверкой на потерю данных. Оказалось, что числа 0xF.. считаются без знаковыми (даже если приписать signed перед ними в скобочках) и сравнение идёт не так как планировалось, а написав то, что и вы -0x80000000 получил ошибку.
Yandex
Объявления
03.08.2014, 08:18     Unary minus operator applied to unsigned type, result still unsigned
Ответ Создать тему
Опции темы

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