في معظم الأوقات في البرمجة التنافسية، هناك حاجة لتعيين المتغير الحد الأقصى أو الحد الأدنى من القيمة التي يمكن أن يحملها نوع البيانات، ولكن تذكر مثل هذا الرقم الكبير والدقيق يصبح مهمة صعبة. لذلك، تحتوي لغة C++ على وحدات ماكرو معينة لتمثيل هذه الأرقام بحيث يمكن تعيينها مباشرة للمتغير دون كتابة الرقم بالكامل فعليًا.
ال
دعونا نلقي نظرة على مثال:
C++
#include // for int char macros #include // for float double macros #include using namespace std; int main() { // Displaying ranges with the help of macros cout << 'char ranges from: ' << CHAR_MIN << ' to ' << CHAR_MAX << endl; cout << 'nnshort int ranges from: ' << SHRT_MIN << ' to ' << SHRT_MAX << endl; cout << 'nint ranges from: ' << INT_MIN << ' to ' << INT_MAX << endl; cout << 'nlong int ranges from: ' << LONG_MIN << ' to ' << LONG_MAX << endl; cout << 'nfloat ranges from: ' << FLT_MIN << ' to ' << FLT_MAX << endl; return 0; }
الإخراج
هندسة جافا
char ranges from: -128 to 127
nshort int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38
أنواع البيانات ونطاقها وحدات الماكرو
قائمة ببعض وحدات الماكرو لنوع البيانات مذكورة أدناه:
نوع البيانات | يتراوح | ماكرو لقيمة الحد الأدنى | ماكرو لأقصى قيمة |
|---|---|---|---|
شار | -128 إلى +127 | شار_مين | CHAR_MAX |
حرف قصير | -128 إلى +127 | SCHAR_MIN | SCHAR_MAX |
حرف غير موقعة | 0 إلى 255 | -- | Flying_max |
كثافة العمليات قصيرة | -32768 إلى +32767 | SHRT_MIN | SHRT_MAX |
كثافة العمليات قصيرة غير موقعة | 0 إلى 65535 | -- | USHRT_MAX |
كثافة العمليات | -2147483648 إلى +2147483647 | INT_MIN | INT_MAX |
كثافة العمليات غير الموقعة | 0 إلى 4294967295 | -- | UINT_MAX |
كثافة العمليات طويلة | -9223372036854775808 إلى +9223372036854775807 | LONG_MIN | LONG_MAX |
كثافة العمليات طويلة غير موقعة | 0 إلى 18446744073709551615 | -- | Usong_Max |
كثافة العمليات طويلة طويلة كيفية التحويل إلى سلسلة | -9223372036854775808 إلى +9223372036854775807 | Ship_min | LLONG_MAX |
كثافة العمليات الطويلة غير الموقعة | 0 إلى 18446744073709551615 | -- | ULLONG_MAX |
يطفو | 1.17549e-38 إلى 3.40282e+38 | Flt_min | FLT_MAX |
تعويم (سلبي) | -1.17549e-38 إلى -3.40282e+38 إنها | -Lt_min | -FLT_MAX |
مزدوج | 2.22507e-308 to 1.79769e+308 | DBL_MIN | DBL_MAX |
مزدوج (سلبي) | -2.22507e-308 to -1.79769e+308 | -DBL_MIN | -DBL_MAX |
حدود نوع البيانات في C++ الحديثة
إن أسلوب الماكرو أعلاه للحدود العليا والدنيا لنوع البيانات هو أسلوب لغة C القديم الموروث بواسطة C++. لكن لغة C++ لها أيضًا طريقتها الخاصة لتزويد المبرمجين بنفس المعلومات.
يقدم C++ numeric_limits<> قالب الفصل كبديل حديث لوحدات الماكرو هذه. يوفر هذا القالب أسلوبًا أكثر توجهاً للكائنات للوصول إلى حدود أنواع البيانات. يتم تعريفه داخل
دعونا نلقي نظرة على مثال:
C++#include #include using namespace std; int main() { // Displaying ranges with the help of macros cout << 'short int ranges from: ' << numeric_limits<short int>::min() << ' to ' << numeric_limits<short int>::max() << endl; cout << 'nint ranges from: ' << numeric_limits<int>::min() << ' to ' << numeric_limits<int>::max() << endl; cout << 'nlong int ranges from: ' << numeric_limits<long>::min() << ' to ' << numeric_limits<long>::max() << endl; cout << 'nfloat ranges from: ' << numeric_limits<float>::min() << ' to ' << numeric_limits<float>::max() << endl; return 0; }
الإخراج
short int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38
يوصى باستخدام هذا الأسلوب للعثور على الحدود العليا والسفلى لنوع البيانات بدلاً من وحدات الماكرو لأنه أكثر أمانًا وقابلية للقراءة مقارنة بالنهج المعتمد على الماكرو.