Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Inc и Succ


CMOS ©   (2006-02-05 20:50:00) 

Что такое Inc(x) в Delphi и Pascal?
inc x
или
add x, 1; я думаю именно так

А что такое Succ(x)?
inc x
или
add x, 1


palva   (2006-02-07 21:12:00) [1]

begin...end ©   (07.02.06 17:17) [16]
> Порядкового.
Точно.


begin...end   (2006-02-07 17:17:00) [2]

> palva ©   (07.02.06 17:09) [15]
> перечислимого

Порядкового.


palva   (2006-02-07 17:09:00) [3]

> Inc увеличивает, Succ не увеличивает.

Если говорить строго, то не увеличивает, а "берет следующий" для перечислимого типа. Например можно написать:

var b: Boolean;
begin
// ...
b := False;
Inc(b);
WriteLn(b) // True
end.


Zeqfreed   (2006-02-07 14:26:00) [4]

Хотя исходный код увидеть нельзя — можно увидеть получившийся:

procedure Test();
var
a, b : Integer;
begin
a := 0;
Inc(a);
b := Succ(a);

ShowMessage(Format('Incremented a equals %d; The successor of a is %d', [a, b]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Test();
end;


Получаем:
a := 0;
xor ebx, ebx

Inc(a);
inc ebx

b := Succ(a);
lea esi, [ebx+$01]


evvcom   (2006-02-07 14:23:00) [5]


> add x, 1 - это то же самое, но на ассемблере

касаемо типа PInteger, например, будет
add x, 4
в 32-разрядной версии Windows.


Vlad   (2006-02-07 14:21:00) [6]


> CMOS ©   (07.02.06 14:13) [9]


> В любом учебнике говорится, что Inc и Succ увеличивают значение
> переменной. Мне же нужен их исходный код.

Inc увеличивает, Succ не увеличивает.


Digitman   (2006-02-07 14:18:00) [7]


> В любом учебнике говорится, что Inc и Succ увеличивают значение
> переменной


Врешь ведь).. насчет "любого"...

Приведи цитату и ссылку на "учебник" ..


MBo   (2006-02-07 14:17:00) [8]

>Мне же нужен их исходный код
А его нет ;)
Это "Compiler Magic" - при компиляции генерируется код соответственно аргументу (или аргументАМ для Inc)


CMOS   (2006-02-07 14:13:00) [9]

В любом учебнике говорится, что Inc и Succ увеличивают значение переменной. Мне же нужен их исходный код.

procedure Inc;
begin
...
end;


INKDEC   (2006-02-06 02:49:00) [10]

В основном inc(x) и dec(x) мспользуется для увеличения или уменьшения  указателя на единицу:


procedure TForm1.FormCreate(Sender: TObject);
const  A='0123qwe';
var Buf1: Pointer;
   B:byte;
   i:word;
begin
    Buf1:=@a[1];

    for i:=1 to Length(A) do
    begin
      B:= PByte(Buf1)^ ;
      Inc(PByte(Buf1));
      Memo1.Lines.add(char(b));
    end;
end;


Т.К. нельзя просто написать
Buf1:=Buf1+1


Германн   (2006-02-06 01:52:00) [11]


> inc(x) увеличит значение x на 1
> add x, 1 - это то же самое, но на ассемблере


Это, имхо не то же самое, хотя мне тут уже возражали по этому поводу. Хотя кто в нынешнее время обращает внимание на RangeCheck? :(


ВМ_   (2006-02-05 23:30:00) [12]

И всё-таки.

inc(x) увеличит значение x на 1
add x, 1 - это то же самое, но на ассемблере
succ(x) вернёт следующее значение, а с самой переменной x ничего не сделает


Anatoly Podgoretsky   (2006-02-05 21:24:00) [13]

Наверно он решил изучить язык с помощью форума, вместо чтения книг.
Наивный.


Джо   (2006-02-05 21:10:00) [14]

> [3] Zeqfreed ©   (05.02.06 21:09)
> Следующий вопрос будет про Dec и Pred :)

Лиха беда начало :)


Zeqfreed   (2006-02-05 21:09:00) [15]

Следующий вопрос будет про Dec и Pred :)


Джо   (2006-02-05 21:06:00) [16]

Successor (англ.) — последующий элемент.


Anatoly Podgoretsky   (2006-02-05 21:04:00) [17]

Справку смотрел? Учебники читал?


Наверх

Титульная страница Поиск, карта сайта Написать письмо