Я начал изучать язык C, пробую различные коды и экспериментирую с ним. Я написал приведенный ниже код и ожидал, что на выходе будет 6, но на выходе будет 13. Кто-нибудь, пожалуйста, объясните логику этого? Спасибо
#include <stdio.h>
void main() {
int i;
for (i = 0; i <= 3; i++) {
i = i + 1;
printf("%d", i);
}
}
ОТ: изучите, пожалуйста, обучение использованию отладчика, это очень полезно.





Я думаю, вы пытаетесь суммировать 1,2,3. Ваша проблема в том, что вы используете i как индекс цикла, так и как итог. Также вы добавляете 1, не знаю почему
Тебе нужно
#include <stdio.h>
void main()
{
int sum = 0;
for(i=0;i<=3;i++)
{
sum = sum +i;
}
printf("%d\n",sum);
}
хорошо, теперь это имеет смысл. пожалуйста, проверьте ответ, который я опубликовал. вывод 13, и я не знаю, как это 13
Он печатает 1, затем 3.
При первом прохождении цикла i устанавливается в 0. Затем вы добавляете к нему единицу и распечатываете ее.
Затем цикл увеличивает i до 2 (i ++). Затем вы добавляете к нему еще один (i = 3) и распечатываете его.
Затем цикл увеличивает i до 4 и проверяет i <= 3 и завершает работу, поскольку условие больше не выполняется.
спасибо за подробный ответ. пожалуйста, проверьте ответ, который я опубликовал в этой теме
Ответа никогда не будет 6.
Если вы хотите получить ответ 6, printf должен быть вне цикла.
И петля будет
for(i=0;i<=3;i++)
{
a=a+i;
}
Вы должны напечатать ответ.
Объяснение вашей программы
Сначала будет напечатано 1, потому что i = 0, а затем значение i увеличивается на 1 в два раза (1. В условии цикла. 2. в операторе цикла), поэтому i будет 2. Таким образом, следующий результат будет 3, затем снова i увеличивается на 1 два раза, а затем i = 4, и цикл останавливается.
Таким образом, результат этой программы равен 13.
В этом есть смысл. Пожалуйста, проверьте ответ, который я опубликовал. вывод 13, и я понятия не имею, как
Это вообще не '13', это '1' и '3'.
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i = 0; i <= 3; i++)
{
i = i + 1;
//printf("%d", i);
printf("i = %d\n", i);
}
return 0;
}
Вывод кода:
i = 1
i = 3
Если вы удалите "я =" и объедините две строки, это будет просто char '1' и '3'.
Пожалуйста, прочтите код подробно. Если вы все еще в замешательстве, возможно, никто не сможет вам помочь.
Измените строку printf на
printf("%d\n",i);, чтобы вывод был более четким. Я понятия не имею, почему вы ждете 6.