logo

Kiterjesztett integráltípusok (a megfelelő egész méret kiválasztása C/C++ nyelven)

A C/C++ nagyon laza definíciókkal rendelkezik az alapvető egész adattípusokra vonatkozóan (char short in long és long long). A nyelv garantálja, hogy legalább néhány értéktartományt képviselhetnek, de bármely adott platform (a fordító operációs rendszer hardvere) nagyobb lehet ennél.
A jó példa hosszú. Egy gépen 32 bites lehet (a C által megkövetelt minimum). A másiknál ​​64 bites. Mi a teendő, ha egy pontosan 32 bites egész típust szeretne? Itt jön be az int32_t: ez egy álnév az adott rendszer által használt egész számokhoz, ami pontosan 32 bites.
Sablon: 
 

  intN_t or uintN_t   Where N is width of integer which can be 8 16 32 64 or any other type width supported by the library.


 

CPP
// C++ program to show use of extended integral types #include    using namespace std; int main() {  uint8_t i; // i with width of exact 8 bits  // Minimum value represented by unsigned 8 bit is 0  i = 0;  cout << "Minimum value of it: "<< (int)i << endl;  // Maximum value represented by unsigned 8 bit is 255  i = 255;  cout << "Maximum value of it: "<< (int)i << endl;  // Warning: large integer implicitly truncated to  // unsigned type. It will print any garbage value  i = 2436;  cout << "Beyond range value of it: " << (int)i << endl;  return 0; } 

Kimenet: 
 



 In function 'int main()': 19:7:   warning  : large integer implicitly truncated to unsigned type [-overflow] i = 2436; ^ Minimum value of i : 0 Maximum value of i : 255 Beyond range value of i : 132


Különböző variációk  
1. Rögzített szélességű előjel nélküli 8 bites egész szám: uint8_t  
Ez azt jelenti, hogy pontosan 8 bites előjel nélküli int-et adj meg.
2. Minimális szélesség előjel nélküli 8 bites egész szám: uint_least8_t  
Ez azt jelenti, hogy adja meg a legkisebb típusú unsigned int-et, amely legalább 8 bites. Memóriafogyasztásra optimalizálva.
3. Leggyorsabb minimális szélességű előjel nélküli 8 bites egész szám: uint_fast8_t  
Ez azt jelenti, hogy adj nekem egy legalább 8 bites előjel nélküli int-et, ami gyorsabbá teszi a programomat. Az igazítási megfontolások miatt nagyobb adattípust választhat. Sebességre optimalizálva.
Így az uint8_t garantáltan pontosan 8 bit széles. Az uint_least8_t a legkisebb egész szám, amely garantáltan legalább 8 bit széles. Az uint_fast8_t a leggyorsabb egész szám, amely garantáltan legalább 8 bit széles. 
Tehát a kiterjesztett integrál típusok segítenek az írásban hordozható és hatékony kód.
 

általánosság java-ban