Если программа действительно печатает для вас 0
, то это может быть серьезной проблемой с вашим компилятором (или даже с вашей машиной...). Я подозреваю, что он не печатает 0
, но на самом деле ваш вопрос заключается в том, почему программа зацикливается бесконечно.
Это связано с тем, что тело if
содержит только оператор печати. Поэтому, когда a
достигает 0, он не печатается, а строки
a--;
goto begin;
до сих пор казнят. Машина подчинится, вернитесь к begin
и цикл продолжится. Самое быстрое решение — поместить в фигурные скобки все операторы, которые вы хотите выполнить, когда a != 0
:
if(a){
printf("%d\n",a);
a--;
goto begin;
}
return 0;
Это заставит программу зацикливаться только до тех пор, пока a
не станет 0, после чего она вернется.
Но настоящая проблема в том, что не используйте goto
(для этого)! Это идеальная ситуация для использования while
цикла:
while(a--){
printf("%d\n", a);
}
return 0;
(Скобы вокруг while
-тела здесь даже не являются строго необходимыми, а просто хорошей практикой)
person
Kninnug
schedule
13.07.2013
if
не срабатывает, когдаi
для меня равно 0... - person Kninnug   schedule 13.07.2013