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


> Это правило входит в группу "Диагностика 64\\\-битных ошибок"\\\. Разработка правил этой группы больше не ведётся, и в будущем они могут быть отключены\\\. Если вы используете эти правила, \[свяжитесь с нашей поддержкой\]\(https://pvs\-studio\.ru/ru/about\-feedback/\) — мы поможем найти замену или предложим альтернативное решение\\\.

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

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

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

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

```cpp
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
```

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

```cpp
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
```