حجم المتغير char. أنواع النقاط العائمة (العائمة والمزدوجة والمزدوجة الطويلة)

23.08.2019

يحدد نوع البيانات مجموعة من القيم، ومجموعة العمليات التي يمكن تطبيقها على تلك القيم، وكيفية تخزين القيم وتنفيذ العمليات.

تسمى عملية التحقق ووضع القيود على أنواع البيانات المستخدمة بفحص النوع أو كتابة بيانات البرنامج. تتميز أنواع الكتابة التالية:

  • الكتابة الثابتة - يتم التحكم في الكتابة أثناء التجميع.
  • الكتابة الديناميكية - يتم فحص النوع في وقت التشغيل.

تدعم لغة C الكتابة الثابتة، ويجب تحديد أنواع جميع البيانات المستخدمة في البرنامج قبل تجميعها.

هناك أنواع البيانات البسيطة والمركبة وغيرها.

بيانات بسيطة

يمكن تقسيم البيانات البسيطة إلى

  • الأعداد الصحيحة,
  • حقيقي،
  • رمزي
  • دعابة الدماغ.

البيانات المركبة (المعقدة).

  • المصفوفة عبارة عن مجموعة مفهرسة من العناصر من نفس النوع.
  • نوع السلسلة هو مصفوفة تقوم بتخزين سلسلة من الأحرف.
  • البنية عبارة عن مجموعة من العناصر المختلفة (حقول السجل)، المخزنة ككل واحد وتوفر الوصول إلى الحقول الفردية للبنية.

أنواع البيانات الأخرى

  • المؤشر - يخزن عنوانًا في ذاكرة الكمبيوتر يشير إلى بعض المعلومات، وعادةً ما يكون مؤشرًا لمتغير.

يعمل البرنامج المكتوب بلغة C مع بيانات من أنواع مختلفة. جميع البيانات لها اسم ونوع. يتم الوصول إلى البيانات الموجودة في البرنامج عن طريق أسمائهم (المعرفات).

المعرف هو تسلسل يحتوي على ما لا يزيد عن 32 حرفًا، والذي يمكن أن يتضمن أي أحرف من الأبجدية اللاتينية a - z، A - Z، والأرقام من 0 إلى 9 والشرطة السفلية (_). يجب ألا يكون الحرف الأول للمعرف رقمًا.

على الرغم من أنه مسموح باستخدام اسم يصل إلى 32 حرفًا، إلا أن الأحرف الثمانية الأولى فقط هي ذات الأهمية. وبصرف النظر عن الاسم، كل البيانات لها نوع. يعد تحديد النوع ضروريًا لمعرفة مقدار المساحة التي سيشغلها الكائن المحدد في ذاكرة الوصول العشوائي (RAM).

يلتزم مترجم C بالمطابقة الصارمة للأحرف الكبيرة والصغيرة في أسماء المعرفات والرموز المميزة.

بيانات عددية

يمكن تمثيل البيانات الصحيحة في نموذج موقع أو غير موقع.

الأعداد الصحيحة غير الموقعةيتم تمثيلها كسلسلة من البتات في النطاق من 0 إلى 2 n -1، حيث n هو عدد البتات المشغولة.

الأعداد الصحيحة الموقعةيتم تمثيلها في النطاق -2 n-1 …+2 n-1 -1. في هذه الحالة، يتم تعيين البت الأكثر أهمية من البيانات لإشارة الرقم (0 يتوافق مع رقم موجب، و1 إلى رقم سالب).

الأنواع والأحجام الأساسية للبيانات الصحيحة:

بيانات حقيقية

النوع الحقيقييهدف إلى تمثيل الأعداد الحقيقية. يتم تمثيل الأرقام الحقيقية في شبكة البت الخاصة بالجهاز في شكل موحد.

شكل طبيعي من الرقميفترض وجود رقم واحد مهم (وليس 0) قبل فصل الأجزاء الصحيحة والكسرية. يتم ضرب هذا التمثيل بقاعدة نظام الأرقام إلى الدرجة المناسبة. على سبيل المثال، يمكن تمثيل الرقم 12345.678 في النموذج المقيس على النحو التالي:

12345.678 = 1.2345678 10 4

يمكن تمثيل الرقم 0.009876 في النموذج الطبيعي على النحو التالي:

0.009876 = 9.876·10 -3

في نظام الأرقام الثنائية، يمكن أن يساوي الرقم المهم قبل الفاصل العشري 1 فقط. إذا لم يكن من الممكن تمثيل الرقم في شكل موحد (على سبيل المثال، الرقم 0)، فإن الرقم المهم قبل الفاصل العشري هو 0.

تسمى الأرقام المهمة للرقم، التي تقف في شكل طبيعي بعد فاصل الأجزاء الصحيحة والكسرية، الجزء العشري للرقم.

في الحالة العامة، يمكن تمثيل الرقم الحقيقي في شبكة البت الخاصة بالكمبيوتر على شكل 4 حقول.

  • لافتة- البت الذي يحدد إشارة الرقم الحقيقي (0 للأرقام الموجبة، 1 للأرقام السالبة).
  • درجة- يحدد قوة 2 التي تريد ضرب الرقم بها بشكل طبيعي. بما أن قوة 2 لرقم في صيغة مقيسة يمكن أن تكون إما موجبة أو سالبة، فإن قوة صفر لـ 2 في تمثيل رقم حقيقي تتوافق مع قيمة التحول، والتي يتم تعريفها على أنها

    حيث n هو عدد الأرقام المخصصة لتمثيل قوة الرقم.

  • جميع- بتة تساوي دائمًا 1 للأرقام المقيسة، لذلك في بعض تمثيلات النوع، يتم حذف هذه البتة ويفترض أنها تساوي 1.
  • العشري— أرقام مهمة لتمثيل الرقم، تقف بعد فاصل الأعداد الصحيحة والأجزاء الكسرية في شكل موحد.

هناك ثلاثة أنواع رئيسية لتمثيل الأعداد الحقيقية في لغة C:

كما يتبين من الجدول، فإن البت الصحيح مفقود بالنسبة للأنواع العائمة والمزدوجة. في هذه الحالة، يتكون نطاق تمثيل الرقم الحقيقي من نطاقين يقعان بشكل متماثل بالنسبة للصفر. على سبيل المثال، يمكن تمثيل نطاق تمثيل الأعداد العائمة على النحو التالي:

مثال: تمثيل الرقم -178.125 في شبكة 32 بت (نوع عائم).

لتمثيل رقم في نظام الأرقام الثنائية، نقوم بتحويل الأجزاء الصحيحة والكسرية بشكل منفصل:

178 10 = 10110010 2 .

0,125 10 = 0,001 2 .

178.125 10 = 10110010.001 2 =1.0110010001 2111

للتحويل إلى النموذج الطبيعي، قم بإزاحة 7 بتات إلى اليسار).

لتحديد قوة الرقم، استخدم التحول:

0111111+00000111 = 10000110 .

وبالتالي، سيتم تمثيل الرقم -178.125 في شبكة البتات على النحو التالي:

نوع الحرف

يقوم نوع الحرف بتخزين رمز الحرف ويستخدم لعرض الأحرف بترميزات مختلفة. يتم تحديد بيانات الأحرف في الرموز وهي في الأساس قيمة عددية. لتخزين رموز الأحرف في لغة C، يتم استخدام نوع char.

نوع منطقي

يُستخدم النوع المنطقي في العمليات المنطقية، ويستخدم في اختبارات الحالة الخوارزمية وفي الحلقات، وله معنيان:

  • حقيقي حقيقي
  • كاذبة — — كاذبة

يجب أن يعلن البرنامج عن جميع البيانات المستخدمة، مع الإشارة إلى اسمه ونوعه. يجب أن يسبق وصف البيانات استخدامها في البرنامج.

مثال لإعلان الكائن

كثافة العمليات ن؛ // متغير n من النوع الصحيح
مزدوج أ؛ // متغير من النوع الحقيقي مزدوج الدقة

إجابة:
  1. أنواع البيانات الصحيحة:

كثافة العمليات قصيرة، كثافة العمليات قصيرة غير موقعة، كثافة العمليات، كثافة العمليات غير الموقعة، طويلة، غير موقعة طويلة.

  1. أنواع بيانات النقطة العائمة (المقابلة للأنواع الحقيقية):

تعويم، مزدوج، مزدوج طويل.

  1. نوع بيانات الحرف:

شار (شار موقّع)، شار غير موقع، wchar_t.

  1. نوع البيانات المنطقية:

منطقي.

  1. نوع البيانات المعدودة (المقدمة في Visual C++):

التعداد.

2. ما هي ميزات استخدام أنواع البيانات الصحيحة؟

في لغة C++، أنواع البيانات الصحيحة الرئيسية هي: short int، unsigned short int، int، unsigned int، long (long int)، unsigned long (unsigned long int).

تمثل أنواع البيانات هذه قيمًا من مجموعة من الأعداد الصحيحة. على سبيل المثال:

2 -100 398

يمكن أن تحتوي أنواع البيانات التي تبدأ بالبادئة غير الموقعة على أرقام موجبة فقط.

تشغل بيانات النوع int القصير وغير الموقع نصف مساحة الذاكرة التي تشغلها بيانات النوع int وغير الموقع.

تشغل البيانات من النوع long, unsigned long مساحة ذاكرة أكبر بمرتين من البيانات من النوع int, unsigned int.

3. كيف يمكن وصف متغير اسمه x من النوع الصحيح في البرنامج؟

إجابة:
كثافة العمليات س؛ // عدد صحيح موقّع

ونتيجة لذلك، تحت المتغير سسيتم تخصيص مساحة ذاكرة 4 بايت. يعتمد حجم الذاكرة المخصصة للمتغير على خصائص الكمبيوتر ونوع نظام التشغيل وإعدادات المترجم.

4. كيف تكتب الرقم 239 في متغير صحيح؟

للقيام بذلك، استخدم عامل التعيين، والذي يُشار إليه بالرمز "=".

الإجابة 1.إدخال رقم في متغير بعد وصفه.

كثافة العمليات س؛ س = 239؛

الإجابة 2.إدخال رقم في متغير أثناء وصفه (التهيئة الأولية).

كثافة العمليات س = 239؛

5. ما هي مميزات أنواع البيانات ذات الفاصلة العائمة؟

تتيح لك أنواع بيانات النقطة العائمة تمثيل القيم من مجموعة من الأرقام الحقيقية. على سبيل المثال:

8.35 -990.399 239.0.

يحتوي C++ على أنواع بيانات الفاصلة العائمة الأساسية التالية:

تعويم، مزدوج، مزدوج طويل.

يشغل المتغير من النوع double مساحة في ذاكرة الكمبيوتر أكبر بمرتين من المتغير من النوع float.

كما أن المتغير الطويل من النوع المزدوج يشغل مساحة في ذاكرة الكمبيوتر أكبر بمرتين من المتغير من النوع المزدوج.

6. كيف تصف المتغير الذي يأخذ قيمة الفاصلة العائمة؟

مثال لوصف متغيرات الأنواع العائمة والمزدوجة والمزدوجة الطويلة:

تعويم و؛ مزدوج د؛ د مزدوج طويل؛

7. كيف تكتب قيمًا رقمية لمتغير النقطة العائمة؟

مثال على إدخال البيانات الرقمية في متغيرات الفاصلة العائمة:

تعويم و = -9928.45؛ // التهيئة الأولية مزدوج د؛ د مزدوج طويل؛ د = 0.445332؛ // مهمة تشغيل دينار = 3892923898239.030903؛ // مهمة تشغيل

8. كيفية تحويل متغير عائم إلى نوع int؟

للقيام بذلك، يتم استخدام عملية صب النوع. يجب أن تشير بين قوسين إلى اسم النوع الذي سيتم صب القالب عليه.

تعويم أ؛ كثافة العمليات ب؛ أ = 8.457؛ ب = (كثافة العمليات) أ؛ // ب = 8

عند استخدام عمليات نقل الكتابة، يجب أن تأخذ في الاعتبار القيود المطبقة على الأنواع التي تشغل مساحة أقل في ذاكرة الكمبيوتر.

على سبيل المثال، يمكن للمتغير من النوع short int أن يمثل نطاقًا أصغر من الأرقام مقارنة بالمتغيرات من النوع float أو double. تتجاوز القائمة التالية قيمة في متغير من النوع short int :

كثافة العمليات قصيرة أنا؛ تعويم و؛ و = 3990099.8؛ أنا = (كثافة) و؛ // i = -7597 - تجاوز السعة

9. كيفية تحويل متغير من نوع int إلى نوع مزدوج؟

مثال على التحويل من int إلى double:

كثافة العمليات أنا؛ مزدوج د؛ ط = 982؛ د = (مزدوج)أنا؛ // د = 982.0

10. ما هي مميزات استخدام بيانات الحرف (بيانات الحرف) في البرنامج؟

تمثل البيانات من النوع char قيمة الحرف للرمز الذي تم إدخاله من لوحة المفاتيح. رمز الرمز هو عدد صحيح.

على سبيل المثال، رمز الحرف "f" هو 102.

جزء التعليمات البرمجية الذي يحسب رمز الحرف:

رمز كثافة العمليات؛ رمز شار؛ الرمز = "و"؛ كود = (int) رمز؛ // الكود = 102

البيانات من النوع char هي نفس الأعداد الصحيحة. تشغل البيانات من النوع char بايتًا واحدًا في ذاكرة الكمبيوتر.

توجد علاقة الحرف بالرمز في جدول رموز Windows. الأحرف ذات الرموز من 0 إلى 127 هي أحرف BIOS محجوزة. وهي تشمل الرموز الأكثر استخدامًا والرموز الرقمية والرموز اللاتينية. لا يمكن تغيير هذه الأحرف.

الأحرف ذات الرموز من 128 إلى 255 هي أحرف إقليمية مرتبطة بأبجدية معينة للكمبيوتر المثبت عليه نظام التشغيل Windows.

11. ما هي مميزات استخدام نوع البيانات bool (النوع المنطقي)؟

يمكن للمتغيرات من النوع bool أن تأخذ قيمتين فقط:

صحيح - الحقيقة،

كاذبة - كاذبة.

يتم استخدام هذه المتغيرات لاختبار التعبيرات المنطقية. القيمة الرقمية للصحيح هي 1. القيمة الرقمية للخطأ هي 0 .

مقتطف الكود الذي يحدد القيم الرقمية صحيح وخطأ:

نتيجة كثافة العمليات؛ منطقي ب؛ النتيجة = (int)صحيح؛ // النتيجة = 1 ب = خطأ؛ النتيجة = (int )ب; // النتيجة = 0

مقتطف التعليمات البرمجية الذي يحول الأنواع int وfloat إلى منطقية:

كثافة العمليات أنا؛ تعويم و؛ منطقي ب؛ ط = 6؛ ب = (منطقي)أنا؛ // ب = صحيح و = 0.0؛ ب = (منطقي) و؛ // ب = خطأ

12. كيفية تحديد حجم الذاكرة التي يشغلها متغير من نوع معين؟

يتم استخدام العملية sizeof() لهذا الغرض.

مقتطف تعليمات برمجية يحدد حجم بعض أنواع البيانات:

كثافة العمليات د؛ د = sizeof(شار); // د = 1 d = sizeof(unsigned int); // د = 4 د = sizeof(float); // د = 4 د = sizeof(double); // د = 8

13. كيف تتم تهيئة المتغيرات ذات الأنواع المختلفة؟

كثافة العمليات د = 28؛ تعويم ض = (تعويم)2.85؛ شار ج = "ك" ; السلسلة ^s = "مرحبًا!" ; مزدوج ص = -8.559؛

14. كيفية تحديد الحد الأقصى المسموح به (الحد الأدنى المسموح به) لمتغير من نوع معين؟

لتحديد الحد الأقصى أو الأدنى لقيمة متغير من نوع معين، تستخدم مكتبة .NET Framework الخاصيتين MaxValue وMinValue.

أمثلة على تحديد القيم الحدية للمتغيرات بأنواعها المختلفة.

للمتغيرات من النوع int :

// اكتب كثافة العمليات كثافة العمليات أنا؛ طويل ماكسينت؛ MinInt طويلة؛ MaxInt = (long )i.MaxValue; // ماكسينت = 2147483647 MinInt = (long )i.MinValue; // ميننت = -2147483648

للمتغيرات من النوع short int :

// اكتب int قصير كثافة العمليات القصيرة؛ int MaxInt; int MinInt; MaxInt = (int )si.MaxValue; // ماكسينت = 32767 MinInt = (int )si.MinValue; // ميننت = -32768

للمتغيرات من النوع int غير الموقعة :

// اكتب int غير موقعة واجهة مستخدم غير موقعة؛ int غير الموقعة MaxInt; Int غير الموقعة MinInt؛ MaxInt = ui.MaxValue; // ماكسينت = 4294967295 MinInt = ui.MinValue; // ميننت = 0

للمتغيرات العائمة:

// النوع العائم تعويم و؛ تعويم ماكسف. تعويم مينف؛ MaxF = f.MaxValue; // ماكسف = 3.402823E+38 MinF = f.MinValue; // مينف = -3.402823E+38

للمتغيرات من النوع المزدوج:

// اكتب مزدوج مزدوج د؛ مزدوج ماكسد. عقل مزدوج؛ الحد الأقصى = d.MaxValue; // الحد الأقصى = 1.79769313486232E+308 الحد الأدنى = d.MinValue؛ // الحد الأدنى = -1.79769313486232E+308

للمتغيرات من النوع char:

// اكتب شار شار ج؛ كثافة العمليات ماكس سي؛ كثافة العمليات مينك؛ ماكس = (int)c.MaxValue; // الحد الأقصى = 127 Min = (int )c.MinValue; // الحد الأدنى = -128

15. ما هي مميزات استخدام نوع التعداد؟

نوع التعداد هو نوع بيانات التعداد. يحدد القيم التذكيرية لمجموعات من القيم الصحيحة. تحتوي كل قيمة تذكيرية على محتوى محدد ويتم تمثيلها بعدد صحيح.

مثال على استخدام نوع التعداد لتمثيل أشهر السنة:

تعداد الأشهر (يناير، فبراير، مارس، أبريل، مايو، يونيو، يوليو، أغسطس، سبتمبر، أكتوبر، نوفمبر، ديسمبر) مليون؛ من = يناير؛ // مليون = 0 من = مارس؛ // مليون = 2 من = سبتمبر؛ // مليون = 8

يصف المثال أدناه متغيرًا يسمى mn من النوع التعداد الأشهر. القيم التذكيرية للأشهر (يناير، فبراير، …) تبدأ من 0 (0، 1، 2، …). تذكير شهر يناير هو القيمة الصحيحة 0، وتذكر شهر فبراير هو العدد الصحيح 1، وهكذا.

لذلك، باستخدام نوع التعداد، يمكن استخدام أساليب الإستذكار في نص البرنامج لتحسين وضوح التعليمات البرمجية المصدر.

يمكنك أيضًا كتابتها بهذه الطريقة:

mn = (تعداد الأشهر)2؛ // مليون = مارس mn = (تعداد الأشهر)11؛ // مليون = ديسمبر

16. ما هي مميزات النوعفارغ في البرامج علىج++ ?

يتم استخدام نوع البيانات الفارغة في الحالات التالية:

  • إذا كنت بحاجة إلى وصف دالة لا تُرجع أي قيمة (انظر المثال)؛
  • إذا كنت بحاجة إلى وصف دالة لا تتلقى معلمات (انظر المثال).

مثال. MyFun() هي دالة بدون معلمات ولا تُرجع أي قيمة (تُرجع النوع void ) ولا تأخذ أي معلمات.

عام: باطلة MyFun (باطلة) { // جسم الوظيفة // ... يعود؛ // العودة من دالة لا تُرجع قيمة } // استدعاء دالة من البرنامج ... متعتي()؛ ...

17. هل من الممكن الإعلان عن متغير النوعفارغ في برنامج؟

هذا غير ممكن لأن نوع الفراغ غير مرتبط بقيمة.

يؤدي الإعلان عن متغير من النوع void إلى حدوث خطأ في الترجمة مع الرسالة:

"الاستخدام غير القانوني للنوع باطل"

18. ما هي مميزات النوعwchar_ ر الخامسمرئي ج++ ?

يتم استخدام متغيرات من النوع char (انظر الفقرات السابقة) لتخزين أحرف ASCII ذات 8 بت.

يتم استخدام النوع wchar_t لتخزين الأحرف التي تشكل جزءًا من مجموعات الأحرف الكبيرة. على سبيل المثال، تحتوي الأبجدية الصينية على عدد كبير من الأحرف. 8 أرقام ليست كافية لتمثيل المجموعة الكاملة من الأحرف الصينية. لذلك، إذا كنت بحاجة إلى استخدام البرنامج في السوق الدولية، فمن المستحسن استبدال نوع char بـ wchar_t.

مثالباستخدام نوع wchar_t.

... wchar_t; // تم تخصيص 2 بايت من الذاكرة للمتغير t ر = "س"; ...

في هذا الدرس سوف تتعلم أبجدية لغة C++، وماذا أيضا أنواع البياناتيمكن للبرنامج معالجتها. قد لا تكون هذه هي اللحظة الأكثر إثارة، لكن هذه المعرفة ضرورية بالإضافة إلى ذلك، عندما تبدأ في تعلم أي لغة برمجة أخرى، ستمر بمرحلة مماثلة من التعلم بثقة أكبر! يمكن أن يحتوي برنامج C++ على الرموز التالية:

  • الأحرف اللاتينية الكبيرة والصغيرة A، B، C...، x، y، z والشرطة السفلية؛
  • الأرقام العربية من 0 إلى 9؛
  • الأحرف الخاصة: ( ) ، | , () + - / % * . \' : ؟< > = ! & # ~ ; ^
  • المسافة وعلامة التبويب وأحرف السطر الجديد.

في اختبار البرنامج يمكنك استخدامه تعليقات. إذا كان النص يحتوي على حرفين مائلين للأمام // وينتهي بحرف سطر جديد أو كان محاطًا بين الحرفين /* و */، فإن المترجم يتجاهله.

البيانات في C++

لحل مشكلة ما، يقوم أي برنامج بمعالجة بعض البيانات. يمكن أن تكون من أنواع مختلفة: الأعداد الصحيحة والأرقام الحقيقية، والأحرف، والسلاسل، والمصفوفات. في لغة C++، يتم وصف البيانات عادة في بداية الوظيفة. ل أنواع البيانات الأساسيةاللغات تشمل:

لتوليد أنواع أخرى من البيانات الأساسية وما يسمى محددات.تحدد لغة C++ أربعة محددات لنوع البيانات:

  • قصير قصير؛
  • طويل طويل؛
  • وقعت - وقعت؛
  • غير موقعة - غير موقعة.

نوع عدد صحيح

نوع المتغير كثافة العملياتفي ذاكرة الكمبيوتر يمكن أن تشغل 2 أو 4 بايت. ذلك يعتمد على حجم بت المعالج. افتراضيًا، تعتبر كافة أنواع الأعداد الصحيحة موقعة، أي المحدد وقعتقد لا يتم تحديدها. محدد غير موقعةيسمح لك بتمثيل الأرقام الإيجابية فقط. فيما يلي بعض نطاقات قيم النوع الصحيح

يكتب يتراوح مقاس
كثافة العمليات -2147483648…2147483647 4 بايت
كثافة العمليات غير الموقعة 0…4294967295 4 بايت
وقعت كثافة العمليات -2147483648…2147483647 4 بايت
كثافة العمليات قصيرة -32768…32767 2 بايت
كثافة العمليات طويلة -2147483648…2147483647 4 بايت
كثافة العمليات قصيرة غير موقعة 0…65535 2 بايت

النوع الحقيقي

يتم تمثيل رقم النقطة العائمة في النموذج mE +- p، حيث m هو الجزء العشري (عدد صحيح أو رقم كسري بفاصلة عشرية)، p هو الأس (عدد صحيح). عادة القيم مثل يطفوتشغل 4 بايت، و مزدوج 8 بايت. جدول نطاق قيمة النوع الحقيقي:

يطفو 3.4E-38...3.4E+38 4 بايت
مزدوج 1.7E-308…1.7E+308 8 بايت
مزدوج طويل 3.4E-4932...3.4E+4932 8 بايت

نوع منطقي

نوع المتغير منطقييمكن أن تأخذ قيمتين فقط حقيقي (حقيقي ) أو فاسل (كذب ). يتم تفسير أي قيمة لا تساوي الصفر على أنها حقيقي.معنى خطأ شنيعممثلة في الذاكرة كـ 0.

اكتب الفراغ

مجموعة القيمة من هذا النوع فارغة. يتم استخدامه لتحديد الوظائف التي لا تُرجع قيمة، ولتحديد قائمة فارغة لوسائط الوظائف، كنوع أساسي للمؤشرات، وفي عمليات صب الكتابة.

تحويل نوع البيانات

في لغة C++، هناك نوعان من تحويل نوع البيانات: صريح وضمني.

  • التحويل الضمنييحدث تلقائيا. ويتم ذلك أثناء المقارنة أو التعيين أو تقييم التعبيرات بمختلف أنواعها. على سبيل المثال، سيقوم البرنامج التالي بطباعة قيمة مثل إلى وحدة التحكم يطفو

#تتضمن "stdafx.h" #تتضمن استخدام اسم للمحطة؛ int main() ( int i=5; float f=10.12; cout<>باطل"); إرجاع 0;)

#تشمل "stdafx.h"

#يشمل

استخدام اسم للمحطة ؛

انت مين()

إنت ط = 5 ; تعويم و = 10.12؛

cout<< i / f ;

النظام ("إيقاف مؤقت>>باطل")؛

العودة 0 ;

يتم إعطاء الأولوية القصوى للنوع الذي يتم فيه فقدان أقل قدر من المعلومات. يجب ألا تسيء استخدام تحويل النوع الضمني، حيث قد تنشأ مواقف مختلفة غير متوقعة.

  • تحويل صريحعلى عكس الضمني، يتم تنفيذه بواسطة المبرمج. هناك عدة طرق للقيام بهذا التحويل:
  1. التحويل إلى الأنماط ج: (تطفو) أ
  2. التحويل إلى الأنماط سي ++: يطفو()

يمكن أيضًا إجراء صب النوع باستخدام العمليات التالية:

static_cast<>() const_cast<>() reinterpret_cast<>()dynamic_cast<> ()

static_cast<> ()

const_cast<> ()

reinterpret_cast<> ()

Dynamic_cast<> ()

static_cas- تحويل أنواع البيانات ذات الصلة. يقوم هذا العامل بتحويل الأنواع وفقًا للقواعد المعتادة، والتي قد تكون ضرورية عندما لا يقوم المترجم بإجراء التحويل التلقائي. سيبدو بناء الجملة كما يلي:

اكتب static_cast<Тип>(شيء)؛

باستخدام static_cast، لا يمكنك إزالة الثبات من متغير، ولكن يمكن للعامل التالي القيام بذلك. const_cast- يستخدم فقط عندما يكون من الضروري إزالة الثبات من الكائن. سيبدو بناء الجملة كما يلي:

يكتبconst_cast< يكتب> (شيء);

reinterpret_cast- يستخدم لتحويل الأنواع المختلفة، عدد صحيح إلى مؤشر والعكس. إذا رأيت كلمة "فهرس" جديدة - فلا تنزعج! وهذا أيضًا نوع بيانات، لكننا لن نعمل معه قريبًا. بناء الجملة هنا هو نفس بناء الجملة الخاص بالعوامل التي تمت مناقشتها سابقًا:

يكتبإعادة تفسير_يقذف< يكتب> (شيء);

Dynamic_cast- يستخدم لتحويل النوع الديناميكي أو تنفيذ المؤشر أو الصب المرجعي. بناء الجملة:

يكتبمتحرك _يقذف< يكتب> (شيء);

أحرف التحكم

أنت بالفعل على دراية ببعض "أحرف التحكم" هذه (على سبيل المثال، مع ). تبدأ جميعها بشرطة مائلة عكسية وتحيط بها أيضًا علامات الاقتباس المزدوجة.

صورة

رمز سداسي عشري

اسم

صوت الصافرة

العودة خطوة واحدة

ترجمة الصفحة (التنسيق)

ترجمة الخط

إرجاع

الجدولة الأفقية

علامة التبويب العمودية

عند كتابة برنامج بأي لغة، تحتاج إلى استخدام متغيرات مختلفة لتخزين معلومات مختلفة. المتغيرات ليست سوى مواقع ذاكرة محجوزة لتخزين القيم. هذا يعني أنه عند إنشاء متغير، فإنك توفر بعض المساحة في الذاكرة.

يمكنك تخزين معلومات من أنواع بيانات مختلفة مثل الحرف، والأحرف العريضة، والعدد الصحيح، والنقطة العائمة، والنقطة العائمة المزدوجة، والمنطقية، وما إلى ذلك. واستنادًا إلى نوع بيانات المتغير، يقوم نظام التشغيل بتخصيص الذاكرة ويقرر ما يمكن تخزينه في الذاكرة المحجوزة.

أنواع مدمجة بدائية

تقدم لغة C++ للمبرمج مجموعة غنية من أنواع البيانات المضمنة والمحددة من قبل المستخدم. تسرد الجداول التالية أنواع البيانات السبعة الرئيسية في لغة C++:

يكتب الكلمة الرئيسية
منطقية منطقي
شخصية شار
عدد صحيح كثافة العمليات
النقطة العائمة يطفو
نقطة عائمة مزدوجة مزدوج
عديم القيمة فارغ
شخصية واسعة wchar_t

يمكن تعديل بعض الأنواع الأساسية باستخدام معدل واحد أو أكثر من هذا النوع:

  • وقعت
  • غير موقعة
  • قصير

ويبين الجدول التالي نوع المتغير، وحجم الذاكرة المطلوبة لتخزين القيمة في الذاكرة، وما هو الحد الأقصى والأدنى للقيمة التي يمكن تخزينها في مثل هذه المتغيرات.

يكتب عرض البت النموذجي النطاق النموذجي
شار 1 بايت -127 إلى 127 أو من 0 إلى 255
حرف غير موقعة 1 بايت 0 إلى 255
حرف موقّع 1 بايت -127 إلى 127
كثافة العمليات 4 بايت -2147483648 إلى 2147483647
كثافة العمليات غير الموقعة 4 بايت 0 إلى 4294967295
وقعت كثافة العمليات 4 بايت -2147483648 إلى 2147483647
كثافة العمليات قصيرة 2 بايت -32768 إلى 32767
كثافة العمليات قصيرة غير موقعة يتراوح 0 إلى 65,535
وقعت قصيرة كثافة العمليات يتراوح -32768 إلى 32767
كثافة العمليات طويلة 4 بايت -2,147,483,648 إلى 2,147,483,647
وقعت طويلة كثافة العمليات 4 بايت نفس كثافة العمليات الطويلة
كثافة العمليات طويلة غير موقعة 4 بايت من 0 إلى 4,294,967,295
يطفو 4 بايت +/- 3.4e +/- 38 (~7 أرقام)
مزدوج 8 بايت
مزدوج طويل 8 بايت +/- 1.7e +/- 308 (~15 رقمًا)
wchar_t 2 أو 4 بايت 1 شخصية واسعة

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

#يشمل استخدام اسم للمحطة؛ إنت الرئيسي () (كوت<< "Size of char: " << sizeof(char) << endl; cout << "Size of int: " << sizeof(int) << endl; cout << "Size of short int: " << sizeof(short int) << endl; cout << "Size of long int: " << sizeof(long int) << endl; cout << "Size of float: " << sizeof(float) << endl; cout << "Size of double: " << sizeof(double) << endl; cout << "Size of wchar_t: " << sizeof(wchar_t) << endl; return 0; }

يستخدم هذا المثال endlالذي يقدم حرف السطر الجديد بعد كل سطر، والمشغل<< используется для передачи нескольких значений на экран. Мы также используем оператор حجم()للحصول على حجم أنواع البيانات المختلفة.

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها، فإنه ينتج المخرجات التالية، والتي قد تختلف من جهاز إلى آخر:

حجم الحرف: 1 حجم int: 4 حجم int القصير: 2 حجم int الطويل: 4 حجم التعويم: 4 حجم المزدوج: 8 حجم wchar_t: 4

إعلانات Typedef

يمكنك إنشاء اسم جديد لنوع موجود باستخدام typedef. فيما يلي بناء الجملة البسيط لتحديد نوع جديد باستخدام typedef:

نوع Typedef الاسم الجديد؛

على سبيل المثال، ما يلي يخبر المترجم أن الساقين هي اسم آخر لـ int:

قدم Typedef int؛

الآن أصبح التصريح التالي قانونيًا تمامًا وينشئ متغيرًا صحيحًا يسمى المسافة:

مسافة القدمين

الأنواع المذكورة

يعلن النوع التعدادي عن اسم نوع اختياري ومجموعة من المعرفات الصفرية أو أكثر التي يمكن استخدامها كقيم للنوع. كل عداد هو ثابت نوعه تعداد. يتطلب إنشاء التعداد استخدام كلمة أساسية التعداد. عرض عام لنوع التعداد:

التعداد enum-name ( قائمة الأسماء ) var-list؛

هنا enum-name هو اسم نوع التعداد. يتم فصل قائمة الأسماء بفاصلة. على سبيل المثال، التعليمة البرمجية التالية تحدد تعدادًا للألوان يسمى الألوان ومتغير c من النوع color. أخيرًا، تم تعيين القيمة "الأزرق" لـ c.

لون التعداد (أحمر، أخضر، أزرق) ج؛ ج = أزرق؛

بشكل افتراضي، الاسم الأول له قيمة 0، والاسم الثاني له قيمة 1، والثالث له قيمة 2، وما إلى ذلك. ولكن يمكنك جعل الاسم قيمة محددة عن طريق إضافة مُهيئ. على سبيل المثال، في التعداد التالي، سيكون للأخضر القيمة 5.

لون التعداد (أحمر، أخضر = 5، أزرق)؛

هنا سيكون للون الأزرق قيمة 6 لأن كل اسم سيكون أكبر من الاسم السابق.

توفر ورقة الغش هذه معلومات حول أنواع البيانات الرئيسية للغة البرمجة C++ وميزات تنفيذها. كما يوجد في نهاية السجل جدول بنطاقات قيم هذه الأنواع.

مفهوم نوع البيانات

الغرض الرئيسي من أي برنامج هو معالجة البيانات. يتم تخزين أنواع مختلفة من البيانات ومعالجتها بشكل مختلف. في أي لغة خوارزمية، يجب أن يكون لكل ثابت أو متغير أو تعبير أو دالة نوع معين.

يحدد نوع البيانات:

  • التمثيل الداخلي للبيانات في ذاكرة الكمبيوتر؛
  • مجموعة القيم التي يمكن أن تأخذها الكميات من هذا النوع؛
  • العمليات والدوال التي يمكن تطبيقها على الكميات من هذا النوع.

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

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

أنواع البيانات الأساسية في C++

غالبًا ما تسمى أنواع البيانات الأساسية (القياسية) بالحسابية لأنه يمكن استخدامها في العمليات الحسابية. لوصف الأنواع الرئيسية، يتم تعريف ما يلي:

  1. كثافة العمليات (كثافة العمليات)؛
  2. شار(شار);
  3. wchar_t(widechar);
  4. منطقي (منطقي)؛
  5. تعويم (حقيقي) ؛
  6. مزدوج (دقة مزدوجة حقيقية).

تسمى الأنواع الأربعة الأولى عددًا صحيحًا ( جميع )، الاخيرتين - أنواع النقطة العائمة . يختلف الكود الذي ينشئه المترجم لمعالجة القيم الصحيحة عن كود قيم الفاصلة العائمة.

هنالك أربعة محدد النوع توضيح التمثيل الداخلي ونطاق قيم الأنواع القياسية:

  • قصير قصير)؛
  • طويل طويل)؛
  • وقعت (توقيع)؛
  • غير موقعة.

نوع عدد صحيح (كثافة العمليات)

لا يتم تحديد حجم نوع int بواسطة المعيار، ولكنه يعتمد على الكمبيوتر والمترجم. بالنسبة لمعالج 16 بت، يتم تخصيص 2 بايت للقيم من هذا النوع، لمعالج 32 بت - 4 بايت.

يشير المحدد القصير قبل اسم النوع للمترجم إلى أنه يجب تخصيص 2 بايت للرقم، بغض النظر عن سعة المعالج. المحدد الطويل يعني أن القيمة الصحيحة ستشغل 4 بايت. لذا، على جهاز كمبيوتر 16 بت، تكون المعادلتان int وshort int، وعلى جهاز كمبيوتر 32 بت، تكون المعادلتان int وlong int.

التمثيل الداخلي قيم نوع عدد صحيح - عدد صحيح في الكود الثنائي. عند استخدام المحدد الموقع، يتم تفسير البت الأكثر أهمية من الرقم على أنه موقع (0 هو رقم موجب، 1 هو رقم سالب). يسمح المحدد غير الموقع بتمثيل الأرقام الموجبة فقط، حيث يتم التعامل مع البت الأكثر أهمية كجزء من كود الرقم. وبالتالي، فإن نطاق قيم النوع int يعتمد على المحددات. يتم عرض نطاقات قيم قيم النوع الصحيح مع محددات مختلفة لأجهزة الكمبيوتر المتوافقة مع IBM PC في الجدول "نطاقات القيمة لأنواع البيانات البسيطة" في نهاية الإدخال.

افتراضيًا، تعتبر جميع أنواع الأعداد الصحيحة موقعة، مما يعني أنه يمكن حذف المحدد الموقع.

يتم تعيين نوع أو آخر من الثوابت الموجودة في البرنامج وفقًا لنوعها. إذا لم يكن المبرمج راضيًا عن هذا النوع لسبب ما، فيمكنه الإشارة بوضوح إلى النوع المطلوب باستخدام اللواحق L، l (طويلة) وU، u (غير موقعة). على سبيل المثال، الثابت 32L سيكون من النوع الطويل ويشغل 4 بايت. يمكنك استخدام لاحقتي L وU في نفس الوقت، على سبيل المثال، 0x22UL أو 05Lu.

ملحوظة

يمكن اختصار الأنواع قصيرة int، وlong int، وsigned int، وunsigned int إلى قصيرة، وطويلة، وموقعة، وغير موقعة، على التوالي.

نوع الحرف (شار)

يتم تخصيص عدد من البايتات لقيمة نوع الحرف يكفي لاستيعاب أي حرف من مجموعة الأحرف لجهاز كمبيوتر معين، وهو ما يحدد اسم النوع. عادةً ما يكون هذا 1 بايت. يمكن أن يكون نوع char، مثل أنواع الأعداد الصحيحة الأخرى، موقعًا أو غير موقع. يمكن للقيم الموقعة تخزين القيم في النطاق -128 إلى 127. باستخدام المحدد غير الموقع، يمكن أن تتراوح القيم من 0 إلى 255. وهذا يكفي لتخزين أي حرف في مجموعة أحرف ASCII المكونة من 256 حرفًا. تُستخدم قيم نوع char أيضًا لتخزين الأعداد الصحيحة التي لا تتجاوز حدود النطاقات المحددة.

نوع الحرف الممتد (wchar_t)

تم تصميم النوع wchar_t للعمل مع مجموعة من الأحرف التي لا تكفي بايت واحد لتشفيرها، على سبيل المثال، Unicode. حجم هذا النوع يعتمد على التنفيذ؛ كقاعدة عامة، فإنه يتوافق مع النوع القصير. تتم كتابة ثوابت السلسلة من النوع wchar_t بالبادئة L، على سبيل المثال، L»Gates».

النوع المنطقي (bool)

يمكن للقيم المنطقية أن تأخذ فقط القيمتين صحيح وخطأ، وهي كلمات محجوزة. الشكل الداخلي لتمثيل القيمة false هو 0 (صفر). يتم تفسير أي قيمة أخرى على أنها صحيحة. عند التحويل إلى نوع عدد صحيح، يكون للصحيح القيمة 1.

أنواع النقاط العائمة (العائمة والمزدوجة والمزدوجة الطويلة)

يحدد معيار C++ ثلاثة أنواع من البيانات لتخزين القيم الحقيقية: float وdouble وlong double.

يتم تخزين أنواع البيانات ذات الفاصلة العائمة بشكل مختلف في ذاكرة الكمبيوتر عن أنواع البيانات ذات الأعداد الصحيحة. يتكون التمثيل الداخلي للرقم الحقيقي من جزأين - الجزء العشري والأس. على أجهزة الكمبيوتر المتوافقة مع أجهزة كمبيوتر IBM، تشغل القيم العائمة 4 بايت، منها رقم ثنائي واحد مخصص لعلامة الجزء العشري، و8 بت للأس و23 بت للجزء العشري. العشري هو رقم أكبر من 1.0 ولكن أقل من 2.0. نظرًا لأن الرقم الأول في الجزء العشري دائمًا هو 1، فلا يتم تخزينه.

بالنسبة للقيم المزدوجة التي تشغل 8 بايت، يتم تخصيص 11 و 52 بت للأس والجزء العشري، على التوالي. يحدد طول الجزء العشري دقة الرقم، ويحدد طول الأس نطاقه.كما ترون من الجدول الموجود في نهاية الإدخال، مع نفس عدد البايتات المخصصة للقيم العائمة والطويلة، فإن نطاقات قيمها المسموح بها تختلف بشكل كبير بسبب نموذج التمثيل الداخلي.

يشير المحدد الطويل قبل اسم النوع المزدوج إلى أنه تم تخصيص 10 بايت لقيمته.

تكون ثوابت الفاصلة العائمة من النوع المزدوج بشكل افتراضي. يمكنك تحديد نوع الثابت بوضوح باستخدام اللواحق F وf (عائم) وL وl (طويل). على سبيل المثال، الثابت 2E+6L سيكون من النوع الطويل المزدوج، والثابت 1.82f سيكون من النوع float.

لكتابة برامج قابلة للنقل عبر الأنظمة الأساسية، لا يمكنك وضع افتراضات حول حجم النوع int. للحصول عليه يجب عليك استخدام حجم العملية، والنتيجة هي حجم النوع بالبايت. على سبيل المثال، بالنسبة لنظام التشغيل MS-DOS، سينتج حجم (int) 2، ولكن بالنسبة لنظام التشغيل Windows 98 أو OS/2 ستكون النتيجة 4.

لا يحدد معيار ANSI نطاقات القيم للأنواع الأساسية؛ يتم تحديد العلاقات بين أحجامها فقط، على سبيل المثال:

حجم (تعويم) ≥ slzeof (مزدوج) ≥ حجم (مزدوج طويل)
sizeof(شار) ≥ slzeof(قصير) ≥ sizeof(int) ≥ sizeof(طويل)

ملحوظة

تعتمد القيم الدنيا والقصوى المسموح بها للأنواع الصحيحة على التنفيذ ويتم تقديمها في ملف الرأس ()، خصائص الأنواع الحقيقية - في الملف ()، وكذلك في قالب فئة numeric_limits

اكتب الفراغ

بالإضافة إلى تلك المدرجة، تشمل الأنواع الرئيسية للغة النوع void، لكن مجموعة قيم هذا النوع فارغة. يتم استخدامه لتحديد الوظائف التي لا تُرجع قيمة، ولتحديد قائمة فارغة لوسائط الوظائف، كنوع أساسي للمؤشرات، وفي عمليات صب الكتابة.

نطاقات القيم لأنواع البيانات البسيطة في C++ لأجهزة الكمبيوتر المتوافقة مع IBM PC

س: ماذا يعني مصطلح الكمبيوتر المتوافق مع IBM PC؟
ج: الكمبيوتر المتوافق مع IBM PC هو جهاز كمبيوتر قريب من الناحية المعمارية من IBM PC وXT وAT. تم إنشاء أجهزة الكمبيوتر المتوافقة مع أجهزة كمبيوتر IBM الشخصية على معالجات دقيقة متوافقة مع Intel 8086 (وكما تعلم، فإن جميع معالجات Intel الأحدث متوافقة تمامًا مع Intel 8086). في الواقع، هذه هي جميع أجهزة الكمبيوتر الحديثة تقريبا.

تم تقديم أنواع مختلفة من الأعداد الصحيحة والأنواع الحقيقية، التي تختلف في نطاق ودقة تمثيل البيانات، من أجل منح المبرمج الفرصة لاستخدام قدرات معدات معينة بشكل أكثر فعالية، حيث تعتمد سرعة العمليات الحسابية وحجم الذاكرة على اختيار النوع. لكن البرنامج المحسّن لنوع واحد من أجهزة الكمبيوتر قد لا يكون قابلاً للنقل إلى أنظمة أساسية أخرى، لذا بشكل عام يجب عليك تجنب الاعتماد على خصائص محددة لأنواع البيانات.

يكتب مدى من القيم الحجم (بايت)
منطقي صح وخطأ 1
حرف موقّع -128 … 127 1
حرف غير موقعة 0 … 255 1
وقعت قصيرة كثافة العمليات -32 768 … 32 767 2
كثافة العمليات قصيرة غير موقعة 0 … 65 535 2
وقعت طويلة كثافة العمليات -2 147 483 648 … 2 147 483 647 4
كثافة العمليات طويلة غير موقعة 0 … 4 294 967 295 4
يطفو 3.4e-38 ... 3.4e+38 4
مزدوج 1.7e-308 ... 1.7C+308 8
مزدوج طويل 3.4e-4932... 3.4e+4932 10

بالنسبة للأنواع الحقيقية، يوضح الجدول القيم المطلقة للقيم الدنيا والقصوى.