Uma charada (em C)

Um amigo me deu um enigma:

#include<stdio.h>

#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;
      for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
          printf("%d\n",array[d+1]);
      getchar();
      return 0;
  }

O código acima deve imprimir todos os elementos da matriz, qual é o problema no código (a saída é nada)? Eu acho que o loop não itera nem uma vez?

Eu descobri que o seguinte códigofa trabalhos

#include<stdio.h>



#define TOTAL_ELEMENTS ((sizeof(array) / sizeof(array[0])))
  int array[] = {23,34,12,17,204,99,16};

  int main()
  {
      int d;
      int x = (TOTAL_ELEMENTS-2);
      for(d=-1;d <= x;d++)
          printf("%d\n",array[d+1]);
      getchar();
      return 0;
  }

Tenho uma teoria de que tem algo a ver com a macro, mas não consigo identificar o problem

questionAnswers(4)

yourAnswerToTheQuestion