1179 / 892 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
1

size_t в операторе for

14.12.2011, 20:42. Показов 1337. Ответов 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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2011, 20:42
Ответы с готовыми решениями:

Беззнаковый тип size_t: чем различие между size_t, uintptr_t, ptrdiff_t и intptr_t?
В чем вообще его смысл? Разве запись double a = {1,2,3}; int i = 1; *(a+i)+=1; значит,...

size_t и npos
Здраствуйте! Тут в одной теме нашёл код #include<string> #include<iostream> int main(){ ...

Что такое Size_t
size_t чет про него так мало инфы и так мутно написанно в инете я так попробывал даже создать...

А где size_t декларирован?
А где size_t декларирован?

2
Эксперт С++
5052 / 3113 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
14.12.2011, 21:43 2
Toshkarik, на предполагаемой последней итерации j равен 0. После этого j уменьшается, но поскольку size_t - синоним unsigned, то при уменьшении происходит переполнение и j принимает своё максимальное значение, которое, ясное дело, больше нуля. Поэтому условие j >= 0 выполняется всегда.
1
1179 / 892 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
14.12.2011, 21:55  [ТС] 3
silent_1991, спасибо больше. Невнимательный я, знал ведь что unsigned...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2011, 21:55
Помогаю со студенческими работами здесь

uint32, size_t и подобные им
Собственно, в чем смысл данных типов, в отличие от обычных unsigned int, int и подобных им?

Пользовательский operator new(size_t)
Всем привет! Подскажите пожалуйста, как так получается, что при перегрузке operator new (например,...

Malloc для size_t
структура вида struct BufferParam { double* pBuffer; COLORREF ...

Положительное смещение: size_t vs ptrdiff_t
void foo(char* pBuffer, std::size_t size) { for (??? pos = 0; pos < size; pos++) ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru