﻿# Неинициализированная переменная

Неинициализированная переменная \(uninitialized variable\)— это такая переменная, которой не было присвоено начальное значение\.

Использование неинициализированных переменных схоже с [использованием неинициализированной памяти](https://pvs-studio.ru/ru/blog/terms/0079/) и может приводить к ошибкам разного рода в процессе работы программы\.

Примером может служить такой код:

```cpp
int Sum(int n)
{
  int sum, i;
 
  for (i = 0; i < n; i++)
  {
    sum = sum + 1;
  }
 
  return sum;
}
```

Переменной 'sum' не присвоено начального значения, и она содержит "мусор"\. В отдельных случаях, при определенном везении, там может оказаться и нулевое значение\. Тогда функция будет работать правильно\. Но в общем случае, результат работы функции непредсказуем\. Коварство подобных ошибок в том, что программа может долгое время вести себя правильно\. А потом, после смены компилятора, небольшого рефакторинга и других изменений, начать выдавать ошибочные результаты\. Более того, при каждом запуске программа может вести себя по\-разному\.

Для предотвращения подобных ошибок в языке программирования Си\+\+ лучше инициализировать все переменные начальным значением непосредственно при объявлении\. Объявлять переменные лучше всего непосредственно перед использованием, когда уже известны их начальные значения\. Тогда работоспособный пример кода будет выглядеть так:

```cpp
int Sum(int n)
{
  int sum = 0;
 
  for (int i = 0; i < n; i++)
  {
    sum = sum + 1;
  }
 
  return sum;
}
```

Анализатор PVS\-Studio умеет ряд диагностик, которые позволяют обнаруживать некоторые ошибки, связанные с использование неинициализированных переменных\. Например: [V573](https://pvs-studio.ru/ru/docs/warnings/v573/), [V614](https://pvs-studio.ru/ru/docs/warnings/v614/)\.

## Библиографический список

1. Wikipedia\. [Uninitialized variable\.](https://en.wikipedia.org/wiki/Uninitialized_variable)