﻿# V6124\. Converting an integer literal to the type with a smaller value range will result in overflow\.

Анализатор обнаружил, что переменной целочисленного типа присвоили значение, выходящее за диапазон допустимых значений\.

Пример:

```cpp
public static void test() {
  byte a = (byte) 256;       // a = 0
  short b = (short) 32768;   // b = -32768
  int c = (int) 2147483648L; // c = -2147483648
}
```

В данном примере произойдёт переполнение, и в переменных будут храниться не те значения, которые программист попытался присвоить\.

Происходит это потому, что под определённый целочисленный тип выделяется фиксированное количество байт\. Если значение выходит за рамки того количества байт, которое под него выделили, то лишние биты у значения отсекаются\. Опасность заключается в том, что Java даст скомпилировать и запустить такую программу, но при этом из\-за допущенной ошибки программист получит не те значения, которые хотел изначально\.

Возможно, стоит рассмотреть использование типа, включающего в себя больший диапазон значений:

```cpp
public static void a() {
  short s = (short) 256;
  int i = 32768;
  long l = 2_147_483_648L;
}
```