Использование переменной перед инициализацией (или присваиванием) является серьезной причиной ошибок. Вы не можете надежно проверить это во время выполнения, но вы можете обнаружить это во время или перед компиляцией.
Я предлагаю , а не , чтобы проверить это внутри кода. Поскольку это может вызывать предупреждения компилятора (переменная «i» используется до того, как ей было присвоено значение), вносить новые ошибки и имеет очень мало шансов на успех в средних и больших программах.
Лучшим методом является использование инструментов анализа статического кода (таких как QA / C или PCLint).
Использование компилятора с высоким уровнем чувствительности к предупреждению является бесплатной опцией, с гораздо меньшим охватом, чем у специализированных инструментов.
Если вы выполняете проверку кода, вы также можете включить проверку неинициализированных переменных в контрольный список. Это не гарантия, но это вызовет ручные проверки от рецензентов.
Если вам нужна проверка во время выполнения, то вы можете начать с инициализации переменных до значения вне допустимого диапазона. Например, -1 для положительного значения в противном случае. Тогда вы можете проверить на
#define UNASSIGNED_VALUE -1
static int number_of_apples = UNASSIGNED_VALUE;
if (UNASSIGNED_VALUE == number_of_apples)
{
// error handling
}
это не настоящая переменная «не инициализирован», но, по крайней мере, вы можете определить, были ли выполнены задания времени выполнения в допустимом диапазоне.