logo

Paplašinātie integrālo veidu veidi (pareiza vesela skaitļa izmēra izvēle C/C++ valodā)

C/C++ ir ļoti brīvas definīcijas tā pamata veselo skaitļu datu tipiem (char short in long un long long). Valoda garantē, ka tie var attēlot vismaz kādu vērtību diapazonu, taču jebkura konkrēta platforma (kompilatora operētājsistēmas aparatūra) var būt lielāka par šo.
Labs piemērs ir garš. Vienā mašīnā tas varētu būt 32 biti (minimālais, kas nepieciešams C). Citā gadījumā tas ir 64 biti. Ko darīt, ja vēlaties veselu skaitļu tipu, kas ir precīzi 32 biti garš? Šeit parādās int32_t: tas ir aizstājvārds jebkuram veselam skaitļa veidam, kas ir jūsu konkrētajā sistēmā, kas ir tieši 32 biti.
Veidne: 
 

kā pārvērst virkni par char
  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; } 

Izvade: 
 

 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


Dažādas Variācijas  
1. Fiksēta platuma neparakstīts 8 bitu vesels skaitlis: uint8_t  
Tas nozīmē, ka dodiet man neparakstītu tieši 8 bitu int.
2. Minimālais platums neparakstīts 8 bitu vesels skaitlis: uint_least8_t  
Tas nozīmē, ka dodiet man mazāko neparakstīto int veidu, kuram ir vismaz 8 biti. Optimizēts atmiņas patēriņam.
3. Ātrākais minimālais platums bez paraksta 8 bitu vesels skaitlis: uint_fast8_t  
Tas nozīmē, ka piešķiriet man vismaz 8 bitu neparakstītu int, kas padarīs manu programmu ātrāku. Tas var izvēlēties lielāku datu tipu līdzināšanas apsvērumu dēļ. Optimizēts ātrumam.
Tādējādi tiek garantēts, ka uint8_t platums ir tieši 8 biti. Uint_least8_t ir mazākais veselais skaitlis, kura platums ir vismaz 8 biti. Uint_fast8_t ir ātrākais veselais skaitlis, kura platums ir vismaz 8 biti. 
Tātad paplašinātie integrāļu veidi mums palīdz rakstīšanā pārnēsājams un efektīva kodu.
 

stresep