Использование цикла for для итерации по элементам контейнера / строки без предупреждений как в 32-разрядных, так и в 64-разрядных системах - PullRequest
1 голос
/ 23 апреля 2011

Я просто хочу выполнить итерацию по контейнеру или по строке.

Этот пример кода

for (int i = strlen (str) - 1; i >= 0; i--)
{
    ...
}

выдаст предупреждение при 64-битной компиляции:

warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data

С другой стороны,

for (size_t i = strlen (str) - 1; i >= 0; i--)
{
    ...
}

вызовет бесконечный цикл, так как size_t без знака.

Я знаю, что могу использовать другие методы, , но я просто хочу использовать простой цикл for!

Как написать чистый код как для 32-битных, так и для 64-битных компиляций?

1 Ответ

3 голосов
/ 23 апреля 2011

изменить на:

for (size_t i = strlen (str); i--; )
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...