Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

14.12.2011, 20:42. Просмотров 825. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 20:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос size_t в операторе for (C++):

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

size_t и npos - C++
Здраствуйте! Тут в одной теме нашёл код #include<string> #include<iostream> int main(){ std::string str="/.+(STL).$1/"; ...

Malloc для size_t - C++
структура вида struct BufferParam { double* pBuffer; COLORREF color; size_t size; };

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

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

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

2
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
14.12.2011, 21:43 #2
Toshkarik, на предполагаемой последней итерации j равен 0. После этого j уменьшается, но поскольку size_t - синоним unsigned, то при уменьшении происходит переполнение и j принимает своё максимальное значение, которое, ясное дело, больше нуля. Поэтому условие j >= 0 выполняется всегда.
1
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
14.12.2011, 21:55  [ТС] #3
silent_1991, спасибо больше. Невнимательный я, знал ведь что unsigned...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 21:55
Привет! Вот еще темы с ответами:

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

Типы size_t перевести в string - C++
я нашел исходник секундомер вот код size_t millisecondsCounter(0); size_t secondsCounter(0); size_t minutesCounter(0); char...

Ошибка при использовании size_t - C++
Выдает много ошибок связанные с использованием typedef std::size_t size_type; #include <iostream> #include <cstring> #include...

Предупреждение(потеря данных из uint в size_t) - C++
Приветствую всех. есть такой код: typedef unsigned long long int uint; ....... double* arr; ....... uint count; count...


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

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

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