| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > MinGW32 + W7 64 + unsigned int |
| Автор: NYX 19.5.2011, 00:57 |
| Очень долго не мог понять что работает не так, перерыл ВСЕ! Дебагер повесился, клава стерлась... как следствие вмятина на боковине системника! unsigned int Z = -5; printf("%i", Z); Выводит -5. Как? Компилятор MinGW32, среда Виндус 7 em64t (Intel). |
| Автор: NYX 19.5.2011, 01:21 |
| причем __int16 заворачивается а __int32 нет, несмотря на указание unsigned число всетаки становится signed. А то я думаю у меня цокл виснет без особых на то причин... Как такое может происходить, братцы? Добавлено через 4 минуты и 8 секунд к слову (небылица абсолютная) число не достигает указанного значения в 4294967295 то есть: for (unsigned int X = 0; X < 4294967295; X++) выполняется вечно! |
| Автор: volatile 19.5.2011, 02:53 |
printf'у по барабану, сигнед вы выводите или ансигнед. Он реагирует только на форматную строку. printf("%u", Z); выведет без знака, (даже если Z переделаете потом в сигнед Не может быть. Просто, скорей всего, очень долго. Соберите проект с оптимизацией, или запаситесь терпением. Если все равно нет, приведите весь код. |
| Автор: NYX 19.5.2011, 03:28 |
| про %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, 11:58 |
| то что в printf %i знаковое скалярное а %u беззнаковое а %f и %16.16f ... я просто для наглядности написал, совсем забыв про %u, но тем не менее у себя на сырце я отследил эту гадость. А вмятина конечно же образная, уж больно корпус у меня красивый, жалко его насиловать физической расправой |
| Автор: Alca 19.5.2011, 13:12 | ||
|