BBB » 27 мар 2007, 10:18
Хыиуду писал(а):Мне припоминалось, что при выходе из цикла for значение индекса равно последнему значению плюс один. Потому что цикл, если не ошибаюсь, ассемблерно реализован примерно так (в переводе опять же на Паскаль):
Код: Выделить всё
i:=startvalue-1;
lab1: i:=i+1;
if i>endvalue then goto lab2;
{выполнение команд цикла}
goto lab1;
lab2: {идти дальше по программе}
Снова. Насколько я помню, это (значение счетчика цикла по его выходу) никем не гаратировано. То, что в какой-то реализации какого-то языка получается такой результат, не гарантирует, что вдругой реализации даже этого де языка результат будет такой же. Пожалуй, это можно назвать "недокументированной особенностью". А, как известно, полагаться на недокументированные штучки - это риск.
[quote="Хыиуду"]Мне припоминалось, что при выходе из цикла for значение индекса равно последнему значению плюс один. Потому что цикл, если не ошибаюсь, ассемблерно реализован примерно так (в переводе опять же на Паскаль):
[code]
i:=startvalue-1;
lab1: i:=i+1;
if i>endvalue then goto lab2;
{выполнение команд цикла}
goto lab1;
lab2: {идти дальше по программе}
[/code][/quote]Снова. Насколько я помню, это (значение счетчика цикла по его выходу) никем не гаратировано. То, что в какой-то реализации какого-то языка получается такой результат, не гарантирует, что вдругой реализации даже этого де языка результат будет такой же. Пожалуй, это можно назвать "недокументированной особенностью". А, как известно, полагаться на недокументированные штучки - это риск.