![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.10.2008
Сообщений: 140
|
![]() Код:
шаг 1: i=11, c=8; шаг 2: i=10, c=16 ... шаг 11: i=1, c=88 Вот хоть убейте понять не могу, зачем он i так считает. Вроде и результат устраивает, но зачем??? Всю голову сломал Кстати, если с:array[0..10] of integer; например, ну и пусть элементы равны квадрату от i, то цикл проходит как надо, т.е. i:=0,1,2,3...10 Кто-либо может мне объяснить это? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 16.03.2009
Сообщений: 1,013
|
![]()
хм.. это где это у вас так? в FPC все нормально.. зачем, кстати, бряк ставить, не проще ли выводить i?
Uguu~
|
![]() |
![]() |
![]() |
#3 |
Меркантильный кю
Участник клуба
Регистрация: 02.02.2008
Сообщений: 1,001
|
![]()
Действительно, где Вы такое нашли? Дельфи и BP с 0 начинают
По поводу вопроса есть такое предположение. В ассемблере есть команда loop, которая действует как паскалевский downto (упрощённо говоря). Возможно компилятор, который Вы используете, реализует for-цикл через неё
Росли вроде умными, выросли дурнями... (c)А.Васильев
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 12.10.2008
Сообщений: 140
|
![]()
Компилятор CodeGear Rad Studio Delphi 2007
На самом деле код изначально был сложнее, это пример. Этот код работает именно с таким непонятным багом (может фичей :-) ) Какого то неудобства нет, просто непонятно как так... Я думаю, что кому-нибудь этот момент попадался, пусть пояснит кто знает |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 16.03.2009
Сообщений: 1,013
|
![]()
вряд ли это возможно.. откуда это i=11 ?? Может сделаете скриншот? Посмотрим..
Uguu~
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 12.10.2008
Сообщений: 140
|
![]()
Вот вид, там внизу watchlist, чтобы следить за изменением
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 16.03.2009
Сообщений: 1,013
|
![]()
ну попробуйте одновременно выводить i.. что будет выводиться, правильное значение или нет? может отладчик глючит.. а может реализовано так...
Uguu~
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 12.10.2008
Сообщений: 140
|
![]()
В случае, когда от счетчика цикла зависит хоть что-то например
c:=c+i; Или выводим i, все как положено работает |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 16.03.2009
Сообщений: 1,013
|
![]()
ну возможно какая-нибудь внутренняя оптимизация... как уже выше было сказано, в ассемблере loop уменьшает содержимое регистра cx на 1... можете попытать счастья и обратиться к разработчикам
![]()
Uguu~
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 12.10.2008
Сообщений: 140
|
![]()
Насколько я понял Delphi 2007 действительно какой-то через чур оптимизирующий (иногда даже пугающе) возможно что с точки зрения машины выгоднее, если все равно, делать именно так т.е. отнимать 1
=) всем спасибо |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поясните задачу | HECTOR.A. | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 05.06.2009 23:33 |
Поясните задачку(Delphi) | Ddr | Помощь студентам | 1 | 16.04.2009 21:45 |
Поясните ООП | sodd | Общие вопросы Delphi | 1 | 23.02.2009 14:14 |
Поясните откуда ошибка? | Hegel | Помощь студентам | 8 | 12.01.2009 07:39 |