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