logo

الأنواع المتكاملة الموسعة (اختيار الحجم الصحيح الصحيح في C/C++)

يحتوي C/C++ على تعريفات فضفاضة جدًا لأنواع البيانات الصحيحة الأساسية (char short int long وlong long). تضمن اللغة أنها يمكن أن تمثل على الأقل نطاقًا معينًا من القيم ولكن أي نظام أساسي معين (أجهزة نظام تشغيل المترجم) قد يكون أكبر من ذلك.
والمثال الجيد طويل. على جهاز واحد قد يكون 32 بت (الحد الأدنى المطلوب بواسطة لغة C). وفي مكان آخر 64 بت. ماذا تفعل إذا كنت تريد نوعًا صحيحًا يبلغ طوله 32 بت بالضبط؟ وهنا يأتي دور int32_t: إنه اسم مستعار لأي نوع عدد صحيح يحتوي عليه نظامك الخاص وهو 32 بت بالضبط.
نموذج: 
 

خوارزمية فرز الدمج
  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; } 

الإخراج: 
 

 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


اختلافات مختلفة  
1. عرض ثابت عدد صحيح 8 بت غير موقع: uint8_t  
وهذا يعني أن تعطيني int غير موقعة بالضبط 8 بت.
2. الحد الأدنى للعرض غير الموقع عدد صحيح 8 بت: uint_least8_t  
هذا يعني أن تعطيني أصغر نوع من int غير الموقع والذي يحتوي على 8 بتات على الأقل. الأمثل لاستهلاك الذاكرة.
3. أسرع حد أدنى للعرض غير الموقع بعدد صحيح 8 بت: uint_fast8_t  
وهذا يعني أن تعطيني int غير موقعة لا يقل عن 8 بتات مما سيجعل برنامجي أسرع. قد يختار نوع بيانات أكبر بسبب اعتبارات المحاذاة. الأمثل للسرعة.
وبالتالي يتم ضمان أن يبلغ عرض uint8_t 8 بتات بالضبط. uint_least8_t هو أصغر عدد صحيح مضمون أن يبلغ عرضه 8 بتات على الأقل. uint_fast8_t هو أسرع عدد صحيح مضمون أن يبلغ عرضه 8 بتات على الأقل. 
لذا فإن أنواع التكامل الموسعة تساعدنا في الكتابة محمول و فعال شفرة.
 

جافا فول