﻿# V6131\. Casting to a type with a smaller range will result in an overflow\.

Анализатор обнаружил приведение целочисленного значения к типу данных с меньшим размером, которое приводит к переполнению\. Это происходит из\-за того, что исходное значение выходит из допустимого диапазона целевого типа\.

Пример случая с переполнением:

```cpp
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(int fileSize) {
    int chunkSize = Math.min(fileSize, (int) MAX_CHUNK_SIZE);

    ....
}
```

Здесь вычисление `4L * 1024 * 1024 * 1024` равняется 4,294,967,296 \(`2^32`\), которое после приводится к `int`\. Это значение выходит за пределы допустимого диапазона `int` \(`[-2^31..2^31-1]`\)\. В результате значение становится 0 вместо ожидаемого максимума\.

Чтобы избежать переполнения, в данном случае необходимо использовать тип `long` для всех переменных и параметров, участвующих в вычислениях:

```cpp
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;

void makeChunks(long fileSize) {
    long chunkSize = Math.min(fileSize, MAX_CHUNK_SIZE);

    ....
}
```