Загадка (на C)

Друг загадал мне загадку:

#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;
  }

Приведенный выше код должен распечатать все элементы массива, в чем проблема в коде (вывод ничего)? I Думаете, цикл не повторяется ни разу?

Я обнаружил, что следующий код действительно работает:

#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;
  }

У меня есть теория, что это как-то связано с макросом, но я не могу Попробую понять проблему.

16
задан rolfl 7 November 2013 в 16:32
поделиться