Member 13373801 Ответов: 3

Почему выход равен 20?


int x=0;
	while(x<=10)
	for(;;)
	if(++x%10==0)
	 break;
	printf("x=%d\n",x);


Что я уже пробовал:

выход приходит через 20 минут после выполнения.

3 Ответов

Рейтинг:
1

Ali-RNT

Давайте проследим его:

Когда мы входим в цикл while, x равно 0,

а также при входе в цикл for,

цикл for продолжается, и в 10-й раз он увеличивает x до 10, затем квалифицирует выражение (10%10 == 0), и оно

s true, так что цикл for заканчивается.

Но вот в чем вы, вероятно, ошиблись, пока цикл все еще работает, а x равно 10, поэтому выражение (x <= 10) истинно.

цикл for запускается еще раз и заканчивается, когда x равно 20, и на этот раз цикл while заканчивается.


Рейтинг:
0

Graeme_Grant

if(++x%10==0) break;

Операция по модулю-Википедия[^] значение:
Цитата:
В вычислениях операция по модулю находит остаток после деления одного числа на другое (иногда называемое модулем).

Итак, 20 % 10 = ???


Рейтинг:
0

Patrice T

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.