Друг дал мне загадку:
#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;
}
Приведенный выше код должен печатать все элементы массива, в чем проблема в коде (на выходе ничего нет)? Я думаю, что цикл не повторяется ни разу?
Я обнаружил, что следующий код работает :
#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;
}
У меня есть теория, что это как-то связано с макросом, но я не могу разобраться в проблеме.