В приведенном ниже коде ничего не печатается, что означает, что условие в цикле for
не выполняется. Что может быть причиной?Почему условие цикла for for не работает?
Мне интересно, потому что, когда я печатаю TOTAL_ELEMENTS
отдельно, он дает 5
, поэтому естественно это должно быть 5-2=3 => -1<=3
, поэтому оно должно что-то печатать.
#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;
}
Может кто-нибудь объяснить этот код?
См. Http://stackoverflow.com/questions/31361713/what-will-be-value-of-strlenstr-1-in-for-loop-condition-when-str-is-empty-in/31361751 # 31361751 –
"Потому что, когда я печатаю TOTAL_ELEMENTS отдельно, это приводит к 5" - Нет, это не так. Любая причина, по которой вы так усложняетесь? – Olaf
Я не знаю, какой компилятор вы используете, но GCC дает вам правильный намек: «предупреждение: сравнение между подписным и беззнаковым целым». Конечно, если вы включили все предупреждения. Кто дал это 8 (на словах: восемь!) Upvotes? – deamentiaemundi