Niezrozumiały kod w C

0

Mam funkcję, która coś robi, ale kompletnie nie wiem, co. Potrzebuję napisać coś takiego w Pascalu. Mógłby ktoś wytłumaczyć o co tu chodzi i/lub przepisać to do Pascala?
Kod pochodzi ze strony http://m.m.i24.cc/o5m_demo.c

static inline char* sint32tosfix7(int32_t v,char* sp) {
  // treat sint32 as a 7 decimals fixpoint value and convert it
  // to a string;
  // v: integer value (fixpoint);
  // sp[13]: destination string;
  // return: sp;
  char* s1,*s2,c;
  int i;

  s1= sp;
  if(v<0)
    { *s1++= '-'; v= -v; }
  s2= s1;
  i= 7;
  while((v%10)==0 && i>0)  // trailing zeroes
    { v/= 10;  i--; }
  while(--i>=0)
    { *s2++= (v%10)+'0'; v/= 10; }
  *s2++= '.';
  do
    { *s2++= (v%10)+'0'; v/= 10; }
    while(v>0);
  *s2--= 0;
  while(s2>s1)
    { c= *s1; *s1= *s2; *s2= c; s1++; s2--; }
  return sp;
  }  // sint32tosfix7()
1

Skoro nie wiesz, co to robi, to skąd wiesz, że chcesz napisać dokładnie to samo? :P

1

s:=Format('%8d',[v]);
len:=Length(S);
Insert(s,len-7,'.');

1 użytkowników online, w tym zalogowanych: 0, gości: 1