Все компиляторы C, которые я пробовал, не будут обнаруживать неинициализированные переменные в фрагменте кода ниже. Но дело здесь очевидно.
Не беспокойтесь о функциональности этого фрагмента. Это не настоящий код, и я убрал его для расследования этой проблемы.
BOOL NearEqual (int tauxprecis, int max, int value)
{
  int tauxtrouve;      // Not initialized at this point
  int totaldiff;       // Not initialized at this point
  for (int i = 0; i < max; i++)
  {
    if (2 < totaldiff)  // At this point totaldiff is not initialized
    {
      totaldiff = 2;
      tauxtrouve = value;  // Commenting this line out will produce warning
    }
  }
  return tauxtrouve == tauxprecis ;  // At this point tauxtrouve is potentially
                                     // not initialized.
}
С другой стороны, если я прокомментирую tauxtrouve = value ;, я получаю предупреждение "local variable 'tauxtrouve' used without having been initialized".
Я пробовал эти компиляторы:
- GCC 4.9.2 с -Wall -WExtra
 - Microsoft Visual С++ 2013 с включенными предупреждениями
 
