¿por qué no recibo una advertencia de "usado sin inicializar" de gcc en este ejemplo trivial? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Por qué no hay ninguna advertencia en una declaración sin inicialización en un bucle for? 1 respuesta

Una vez más, un estúpido error variable no inicializado en ¿Cómo solucionar este error de segmentación en un programa de inversión de secuencia?.

Así que iba a repetir el "por favor use-Wall flags ", pero cuando probé el código contra advertencias, no encontré advertencias para mi gran sorpresa.

Así que lo reduje a esto a continuación (este código no tiene sentido para fines de ejecución, pero ilustra lo que quiero mostrar):

#include <stdio.h>

int main()
{

  int i,len=12;

  /* printf("%d\n",i); */

  while(i!=len-1)
  {

    i++;
    len--;
  }

 return 0;
 }

al compilarlo usandogcc 4.7.3 y 6.2.1 usando

gcc -Wall -Wextra -pedantic

No recibo advertencias, mientras quei no se inicializa descaradamente antes de usarlo enwhile lazo

Ahora si descomento elprintf declaración que obtengo:

warning: 'i' is used uninitialized in this function [-Wuninitialized]

Entonces, ¿por qué se emite la advertencia al pasari aprintf pero no en elwhile ¿prueba

(Es diferente degcc no puede advertir sobre la variable no inicializada porque en mi caso, no hay ramas)

(Suena como un error, pero es tan trivial que me pregunto si no me estoy perdiendo algo enorme).

Respuestas a la pregunta(1)

Su respuesta a la pregunta