Siirry sisältöön

C/Standardikirjastot/limits.h

Wikikirjastosta
#include <limits.h>

Tämä tiedosto määrittelee useita makroja (esikääntäjän tasolla), joista selviää erinäisten numeeristen tietotyyppien arvorajat, sekä muuta erinäistä tietotyyppeihin liittyvää.

CHAR_BIT

on kokonaislukuarvo, joka vastaa sitä, montako bittiä char (tai signed char, unsigned char) -tyyppisessä arvossa on. Käytännössä tämä on "montako bittiä on tavussa". Nykyisillä järjestelmillä tämän arvo on käytännössä aina 8. C-standardi vaatii, että sen arvo on vähintään 8.

MB_LEN_MAX

on kokonaislukuarvo ja esittää, miten monta merkkiä voi olla enintään yhdessä monitavuisessa merkissä. Sen arvo on vähintään 1.

Tietotyyppien rajoihin liittyvät makrot on lueteltu alla olevassa taulukossa. C-standardi määrittelee kaikille näistä minimi- ja maksimiarvot. Tämä tarkoittaa sitä, että esim. INT_MIN on aina joko pienempi tai yhtä suuri kuin -32767, eikä voi olla esim. -255; samoin INT_MAX on aina joko suurempi tai yhtä kuin 32767, eikä voi olla esim. 42. Näin int-tyyppisen tietotyyppiin voi aina tallettaa arvon väliltä [-32767, +32767], oli kyseessä mikä alusta tahansa, kunhan se noudattaa C-standardia.

Tietotyyppi Minimiarvon makro on pienempi
tai yhtä kuin
Maksimiarvon makro on suurempi
tai yhtä kuin
Huomiot
signed char SCHAR_MIN -127 SCHAR_MAX +127
unsigned char = 0 UCHAR_MAX +255
char CHAR_MIN CHAR_MAX jos char = signed char, niin CHAR_MIN = SCHAR_MIN ja CHAR_MAX = SCHAR_MAX
jos char = unsigned char, niin CHAR_MIN = 0 ja CHAR_MAX = UCHAR_MAX
short (int) SHRT_MIN -32767 SHRT_MAX +32767
unsigned short (int) = 0 USHRT_MAX +65535
int INT_MIN -32767 INT_MAX +32767
unsigned (int) = 0 UINT_MAX +65535
long (int) LONG_MIN -2147483647 LONG_MAX +2147483647
unsigned long (int) = 0 ULONG_MAX +4294967295
long long (int) LLONG_MIN -9223372036854775807 LLONG_MAX +9223372036854775807 C99
unsigned long long (int) = 0 ULLONG_MAX +18446744073709551615 C99

limits.h on yksi harvoista otsikkotiedostoista, joka on saatavilla myös ns. irrallisessa (engl. freestanding) ympäristössä. Tämä tarkoittaa sitä, että otsikkotiedoston määritelmät ovat kääntäjän tiedossa heti jo ohjelmaa kääntäessä, eikä se sisällä funktioita tai muuttujia. Irrallisia ympäristöjä ovat sellaiset, joissa ei ole saatavilla suoritettavaa C-standardikirjaston toteutusta.