Я провел несколько упражнений из рекомендованного book, который я нашел на этом веб-сайте. Я наткнулся на эту следующую базовую часть кода, которую я не мог полностью понять.Непонимание в базовом для цикла (C)
#include <stdio.h>
int main(void)
{
int i;
for (i = 10; i >= 1; i /= 2)
printf("%d ", i++);
return 0;
}
Это мои рассуждения позади этого фрагмента программы:
- Переменная
i
инициализируется10
. i
проверено, больше или равно1
(что всегда так).- Третье выражение гласит:
i = i/2
, таким образомi
делится на2
и его значение хранится вi
. - В инструкции
printf
i
добавлено после каждаяprintf
справка.
Я просто не могу понять, почему выход этой программы:
1 1 1 1 1 1 1 1
...
Я понимаю, что условие утверждение всегда верно, однако, не должно быть первым значением:
5 3 2 1 1 1 1 1
?
В принципе, я не могу понять, почему значение i
сейчас хранится как 1
. Любые исправления в отношении моих рассуждений и/или понимания по этому вопросу будут оценены. Пожалуйста, извините основной характер этого вопроса.
Выход: '10 5 3 2 1 1 1 ...': См. Http://ideone.com/6qnGdC – abelenky
Убедитесь, что i является int. Проверьте свой двоичный файл (удалите его, затем перекомпилируйте и убедитесь, что отметка времени верна). – jgmjgm
Показать весь код ([MCVE]). –