This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
If a variable of a POD type isn't initialized explicitly and doesn't have an initializer by default, its value will be undefined. Usage of such value will lead to undefined behavior.
Simple synthetic example:
int Aa = Get(); int Ab; if (Ab) // Ab - uninitialized variable Ab = Foo(); else Ab = 0;
Usually errors of using uninitialized variables occur through misprints. For example, it may appear that a different variable should be used in this place. Correct code variant:
int Aa = Get(); int Ab; if (Aa) // OK Ab = Foo(); else Ab = 0;