logo

نطاقات نوع البيانات ووحدات الماكرو الخاصة بها في C++

في معظم الأوقات في البرمجة التنافسية، هناك حاجة لتعيين المتغير الحد الأقصى أو الحد الأدنى من القيمة التي يمكن أن يحملها نوع البيانات، ولكن تذكر مثل هذا الرقم الكبير والدقيق يصبح مهمة صعبة. لذلك، تحتوي لغة C++ على وحدات ماكرو معينة لتمثيل هذه الأرقام بحيث يمكن تعيينها مباشرة للمتغير دون كتابة الرقم بالكامل فعليًا.

ال يحدد ملف الرأس في 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

يوصى باستخدام هذا الأسلوب للعثور على الحدود العليا والسفلى لنوع البيانات بدلاً من وحدات الماكرو لأنه أكثر أمانًا وقابلية للقراءة مقارنة بالنهج المعتمد على الماكرو.