Проблема: перепишите небольшие числа от входа к выходу. Остановка обработки ввод после считывания числа 42. Все номера на входе: целые числа одной или двух цифр.В чем разница между этими двумя решениями?
Пример
Входной сигнал: 1 2 88 42 99
Выход: 1 2 88
Мое решение:
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
while(i!=42)
{
printf("%d",i);
scanf("%d",&i);
}
return 0;
}
Правильное решение:
#include <stdio.h>
int main(void) {
int i;
while(1) {
scanf("%d", &i);
if(i == 42) break;
printf("%d\n", i);
}
return 0;
}
Обе программы заканчиваются, если входной сигнал равен 42, а какая разница между ними?
EDIT: Я только что понял, что это должно было быть опубликовано на сайте codereview.stackexchange.com. Админы, пожалуйста, сделайте необходимое.
Один печатает "\ n", другой нет. –
Я считаю, что они строго эквивалентны, и некоторые хардкорные безделужки-ребята даже говорят, что ваш код более изящный. – Medinoc
Я согласен с @Medinoc. Я ненавижу 'while (1)' заявления, как на их поверхности, они кажутся петлями навсегда. Если целью кода является остановка в определенном состоянии, тогда код должен быть написан, чтобы четко отражать это намерение. – abelenky