# V201. Explicit conversion from 32-bit integer type to memsize type.

Предупреждение информирует о наличии явного приведения 32-битного целочисленного типа к memsize типу, что может маскировать одну из следующих ошибок: V101, V102, V104, V105, V106, V108, V109. Вы можете обратиться к приведенному списку предупреждений, чтобы выявить причину появления диагностирующего сообщения V204.

Ранее предупреждение V201 распространялось и на приведение 32-битных целочисленных типов к указателю. Такие приведения весьма опасны. Поэтому они были выделены в отдельное диагностическое правило V204.

Учтите, что, скорее всего, большинство предупреждений этого типа будет выдано на корректный код. Приведем несколько примеров корректного и некорректного кода, на который будет выдано данное предупреждение.

Примеры некорректного кода.

    int i;
    ptrdiff_t n;
    ...
    for (i = 0; (ptrdiff_t)(i) != n; ++i) {   //V201
      ...
    }

    unsigned width, height, depth;
    ...
    size_t arraySize = size_t(width * height * depth);   //V201

Примеры корректного кода.

    const size_t seconds = static_cast<size_t>(60 * 60);   //V201
    unsigned *array;
    ...
    size_t sum = 0;
    for (size_t i = 0; i != n; i++) {
      sum += static_cast<size_t>(array[i] / 4);   //V201
    }
    unsigned width, height, depth;
    ...
    size_t arraySize =
      size_t(width) * size_t(height) * size_t(depth);    //V201