maxint/fi

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) suomi (fi) français (fr)


MAXINT on vakio, joka vastaa kokonaisluvutyypin ylärajaa ISO 7185 -standardin mukaan.

Huomaa, että tämä arvo muuttuu kääntäjän tilan perusteella eikä sillä ole mitään tekemistä isäntä- tai kohdekoneen ominaisuuksien kanssa.

Jos halutaan tarkistaa osoiteavaruuden koko niin se tarkistetaan sizeof(pointer) käskyllä.

Jos halutaan tietää, onko käytössä CPU, jossa on 64-bittinen ALU niin tarkistetaan, onko symbolia cpu64 määritetty.

Seuraava esimerkki kuvaa, miten nämä arvot liittyvät:


program maxvals;
  const width = 20;
begin
  writeln;
  writeln( 'these change depending on compiler mode:' );
  writeln( '----------------------------------------' );
  writeln( 'maxint:           :', maxint : width );
  writeln( 'high( integer )   :', high( integer ) : width );
  writeln;
  writeln( 'constant, regardless of mode or target: ' );
  writeln( '----------------------------------------' );
  writeln( 'high( int32 )     :', high( int32 ) : width );
  writeln( 'high( int64 )     :', high( int64 ) : width );
  writeln;
  writeln( 'variable, depending on target cpu:' );
  writeln( '----------------------------------------' );
  writeln( 'sizeof( pointer ) :', sizeof( pointer ) : width );
  writeln;
  writeln( 'compile-time definitions:' );
  writeln( '----------------------------------------' );
  {$IFDEF cpu64} writeln( 'cpu64' ); {$ENDIF}
  {$IFDEF cpu32} writeln( 'cpu32' ); {$ENDIF}
  {$IFDEF cpu16} writeln( 'cpu16' ); {$ENDIF}
  writeln;
end.

Vertaile tuloksia kääntäjän tiloilla -Mtp vs -Mobjfpc, esimerkiksi:

fpc -Mtp maxvals.pas && ./maxvals
fpc -Mobjfpc maxvals.pas && ./maxvals