Difference between revisions of "maxint/fi"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with " {{maxint}} <br /> '''MAXINT''' on vakio, joka vastaa kokonaisluvutyypin ylärajaa [http://www.moorecad.com/standardpascal/iso7185.html#6.7.2....")
 
 
Line 8: Line 8:
 
Huomaa, että tämä arvo muuttuu [[Compiler Mode/fi|kääntäjän tilan]] perusteella eikä sillä ole mitään tekemistä isäntä- tai kohdekoneen ominaisuuksien kanssa.
 
Huomaa, että tämä arvo muuttuu [[Compiler Mode/fi|kääntäjän tilan]] perusteella eikä sillä ole mitään tekemistä isäntä- tai kohdekoneen ominaisuuksien kanssa.
  
Jos halutaan tarkistaa osoiteavaruuden koko, tarkistetaan se '''[[SizeOf/fi|sizeof]]([[Pointer/fi|pointer]])'''.
+
Jos halutaan tarkistaa osoiteavaruuden koko niin se tarkistetaan '''[[SizeOf/fi|sizeof]]([[Pointer/fi|pointer]])''' käskyllä.
  
Jos halutaan tietää, onko käytössä CPU, jossa on [[64 bit|64-bittinen]] ALU, tarkista, onko symboli '''cpu64''' määritetty.
+
Jos halutaan tietää, onko käytössä CPU, jossa on [[64 bit|64-bittinen]] ALU niin tarkistetaan, onko symbolia '''cpu64''' määritetty.
  
 
Seuraava esimerkki kuvaa, miten nämä arvot liittyvät:  
 
Seuraava esimerkki kuvaa, miten nämä arvot liittyvät:  
  
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
program maxvals;
 
program maxvals;
 
   const width = 20;
 
   const width = 20;

Latest revision as of 08:53, 30 June 2019

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