Ниже приведен код, с которым у меня возникают проблемы. Я понимаю константы и считаю, что понимаю функцию sizeof, но, должно быть, чего-то не хватает. Вот то, что я пытался сделать, чтобы решить в одиночку: - printf
заявление с TOTAL_ELEMENTS как %d
- она возвращает 7 - printf
заявление TOTAL_ELEMENTS - 2 - она возвращает 5 (как и ожидалось) - заменить 5 в течение loop loop работает правильно - инициализирует глобальную переменную int любого имени и устанавливает ее равной (sizeof(array)/sizeof(array[0]))
. Затем используйте переменную в цикле for, где будут идти TOTAL_ELEMENTS - снова цикл работает правильно.C Программа - о размере и константе, используемой вместе
Так что (по крайней мере, в моей голове), это должно быть что-то, что связано как с константой, так и с функцией sizeof. Я уверен, что массив/массив [0] также играет роль, но через тестирование и замену я могу " t выяснить, в чем проблема. Я прочитал функцию sizeof, а также константы безрезультатно. Я пробовал искать, но не получил, где я не совсем уверен, что я ищу. Мне не нужны ответы, но если кто-то может указать мне в правильном направлении, это будет очень признательно. Заранее спасибо.
#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]);
return 0;
}
Возможно, это компилятор, который я использую; он должен отображать все элементы массива, но все, что происходит, когда я пытаюсь запустить его, выполняется и заканчивается без вывода на печать. – ManofManyTigers
хорошо; Я скопировал код в ideone.com в компилятор/исполнитель C, и он тоже выходит без вывода. Однако, когда я меняю код, указанный в первоначальном описании, он работает так, как ожидалось; все еще не уверены. – ManofManyTigers
Я получаю тот же результат ... Нет вывода. Единственный способ получить ожидаемый результат - назначить 'int dmax = (TOTAL_ELEMENTS-2);' и изменить цикл на 'for (d = -1; d <= dmax; d ++)'. –