Насчет инкремента ++ - C (СИ)
Формулировка задачи:
Прикладываю иллюстрации отладчика, где замечена странность
в первом варианте все происходит так как хочу, код отрабатывает все позиции массива записывая все че нужно куда нужно:
во втором варианте остаются какие то нули непонятные, откуда оне берутся? ведь мы сперва пользуемся значением и и только потом увеличиваем его на единицу, и код эквивалентен первому?
while ((c=getchar()) != EOF){
s[i]=c;
i++;
}while ((c=getchar()) != EOF){
s[++i]=c;
}Решение задачи: «Насчет инкремента ++»
textual
Листинг программы
while ((c=getchar()) != EOF){
s[i]=c;
i++;
}
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- В начале кода инициализируется переменная
cтипомchar, которая будет использоваться для получения ввода из стандартного ввода (stdin). Значение переменнойcбудет равно первому символу, который будет прочитан. - Затем происходит инициализация массива
sтипаchar. Размер массива определяется переменнойiравной 0. То есть, массивsбудет содержать 1 символ. - В цикле
whileпроисходит считывание символа из стандартного ввода с помощью функцииgetchar(). Считанный символ присваивается переменнойc. - Затем происходит сравнение переменной
cс символом конца файла (EOF). Еслиcравно EOF, то цикл завершается. - Внутри цикла происходит присваивание считанного символа массиву
sс помощью индексацииs[i]. - После присваивания значения переменной
iувеличивается на 1, чтобы указать следующий элемент массива. - После выхода из цикла
whileпроисходит завершение работы программы. Список действий: - Инициализация переменной
cтипомchar. - Инициализация массива
sтипаchar. - Вход в цикл
while. - Считывание символа и присвоение переменной
c. - Сравнение переменной
cс EOF. - Присваивание символа массиву
s. - Увеличение индекса
i. - Повторение шагов с 4 по 7 до тех пор, пока
cне станет равным EOF. - Выход из цикла
while. - Завершение работы программы.