Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MinGW32 + W7 64 + unsigned int, непонятки с типами 
:(
    Опции темы
NYX
Дата 19.5.2011, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



Очень долго не мог понять что работает не так, перерыл ВСЕ! Дебагер повесился, клава стерлась... как следствие вмятина на боковине системника!

unsigned int Z = -5;
    printf("%i", Z);

Выводит -5. Как?

Компилятор MinGW32, среда Виндус 7 em64t (Intel).
--------------------
'long long long' is too long for GC
PM   Вверх
NYX
Дата 19.5.2011, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



причем __int16 заворачивается а __int32 нет, несмотря на указание unsigned число всетаки становится signed. А то я думаю у меня цокл виснет без особых на то причин...
Как такое может происходить, братцы?

Добавлено через 4 минуты и 8 секунд
к слову (небылица абсолютная) число не достигает указанного значения в 4294967295
то есть:
for (unsigned int X = 0; X < 4294967295; X++)
выполняется вечно!
--------------------
'long long long' is too long for GC
PM   Вверх
volatile
Дата 19.5.2011, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(NYX @  19.5.2011,  00:57 Найти цитируемый пост)
unsigned int Z = -5;
    printf("%i", Z);

Выводит -5. Как?

printf'у по барабану, сигнед вы выводите или ансигнед. Он реагирует только на форматную строку.
printf("%u", Z); выведет без знака, (даже если Z переделаете потом в сигнед smile )

Цитата(NYX @  19.5.2011,  01:21 Найти цитируемый пост)
for (unsigned int X = 0; X < 4294967295; X++)
выполняется вечно! 

Не может быть. Просто, скорей всего, очень долго. Соберите проект с оптимизацией, или запаситесь терпением.
Если все равно нет, приведите весь код.



PM MAIL   Вверх
NYX
Дата 19.5.2011, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



про %i знаю... Я сам в шоке от случившегося! unsigned не фурычит! После переустановки MinGW все норм. В чем было дело я так и не понял и даже предположить не в силах. Однако бывает же. Два дня не мог вкурить почему у меня цикл виснет, он был расчитан на 3 с лишним ГБ данных. К циклу обращался редко, в пределенной ситуации и был написан он и забыт... а когда дело дошло до дела... вот такая фихня. Черти в компьютере завелись наверно.

Код был именно таким:
for (unsigned int X = 0; X < 4294967295; X++)
Только вместо X был Index который выступал в роли индекса к массиву с НЕКИМ архивом, который читался чем то вроди такого
ReadBrick(DataCollect::LastBrick[Index]);

Собстно функция делала простенькие вычисления, которые помещались в одну строку вместе с return без дополнительных вызовов. Параллельно проивзодились
еще кое какие вычисления но это уже не суть... я в итоге повесил на цокл printf и выкурив 2,5 сигареты просмотрел ход событий, переменная не доходит до нужной
кандиции... чудеса какие то... скрина нет жалко, затер буффер Копипастом.

Это сообщение отредактировал(а) NYX - 19.5.2011, 03:42
--------------------
'long long long' is too long for GC
PM   Вверх
volatile
Дата 19.5.2011, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(NYX @  19.5.2011,  03:28 Найти цитируемый пост)
про %i знаю... 
Что-то вы темните, брат...
Зачем в таком случае вмятину на системнике делать?  smile 
Цитата(NYX @  19.5.2011,  00:57 Найти цитируемый пост)
Очень долго не мог понять что работает не так, перерыл ВСЕ! Дебагер повесился, клава стерлась... как следствие вмятина на боковине системника!
unsigned int Z = -5;
    printf("%i", Z);
Выводит -5. Как?


Цитата(NYX @  19.5.2011,  03:28 Найти цитируемый пост)
Два дня не мог вкурить почему
И через 5 минут обращения на форум, вы вдруг уже не можете воспроизвести бага.
Цитата(NYX @  19.5.2011,  03:28 Найти цитируемый пост)
скрина нет жалко, затер буффер Копипастом.

smile

PM MAIL   Вверх
NYX
Дата 19.5.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 9.1.2007
Где: Россия, Москва

Репутация: нет
Всего: нет



то что в printf %i знаковое скалярное а %u беззнаковое а %f и %16.16f ... я просто для наглядности написал, совсем забыв про %u, но тем не менее у себя на сырце я отследил эту гадость. А вмятина конечно же образная, уж больно корпус у меня красивый, жалко его насиловать физической расправой smile
--------------------
'long long long' is too long for GC
PM   Вверх
Alca
Дата 19.5.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Код

size_t Z = -5;
printf("%zu", Z);  



--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.