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

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

Войти
Регистрация
Восстановить пароль
 
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
#1

size_t в операторе for - C++

14.12.2011, 20:42. Просмотров 767. Ответов 2
Метки нет (Все метки)

Здравствуйте. Возникла проблема с типом size_t. Данный цикл почему то бесконечен
C++
1
2
3
for ( size_t j = 10; j >= 0; j-- ) {
            ;
        }
Если поменять условие на
C++
1
2
3
for ( size_t j = 10; j > 0; j-- ) {
            ;
        }
или
C++
1
2
3
for ( int j = 10; j >= 0; j-- ) {
            ;
        }
то все нормально. Заметил эту проблему сегодня. До этого такого не замечал, может быть потому что не использовал данное условие. IDE и компилятор VS2010.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 20:42     size_t в операторе for
Посмотрите здесь:

Conversion from 'size_t' to 'int' и еще кое-что C++
size_t и npos C++
C++ uint32, size_t и подобные им
C++ Предупреждение(потеря данных из uint в size_t)
C++ Пользовательский operator new(size_t)
Malloc для size_t C++
C++ А где size_t декларирован?
Что такое Size_t C++
C++ Типы size_t перевести в string
Ошибка при использовании size_t C++
что делает size_t в данной функции, и сама функция C++
В чем разница между uinptr_t, size_t, ptrdiff_t C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.12.2011, 21:43     size_t в операторе for #2
Toshkarik, на предполагаемой последней итерации j равен 0. После этого j уменьшается, но поскольку size_t - синоним unsigned, то при уменьшении происходит переполнение и j принимает своё максимальное значение, которое, ясное дело, больше нуля. Поэтому условие j >= 0 выполняется всегда.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
14.12.2011, 21:55  [ТС]     size_t в операторе for #3
silent_1991, спасибо больше. Невнимательный я, знал ведь что unsigned...
Yandex
Объявления
14.12.2011, 21:55     size_t в операторе for
Ответ Создать тему
Опции темы

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