نوع بيانات العدد الصحيح c للدالة. المتغيرات. تعيين نوع Postfix


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

يتم تقسيم أنواع البيانات في C / C ++ إلى رئيسيو المشتقات.
تشمل الأنواع الرئيسية ما يلي:

  1. فارغ(نوع فارغ) ،
  2. int(نوع عدد صحيح) ،
  3. يطفو(أرقام الفاصلة العائمة الحقيقية) ،
  4. مزدوج(أرقام حقيقية للفاصلة العائمة مزدوجة الدقة) ،
  5. شار(نوع الحرف) ،
  6. منطقي- منطقي.

أنواع المركب

لتكوين أنواع أخرى من البيانات ، استخدم رئيسيأنواع + ما يسمى محددات. يتم استدعاء أنواع البيانات التي تم إنشاؤها من الأنواع القياسية باستخدام المحددات أنواع البيانات المركبة. تحدد C ++ أربعة محددات لأنواع البيانات:
  1. قصير قصير؛
  2. طويل طويل؛
  3. موقعة
  4. غير موقعة
الأنواع المشتقة هي:
  • المصفوفات
  • المهام،
  • الطبقات،
  • مؤشرات
  • الروابط
  • الهياكل،
  • ذات الصلة.

نوع الحرف

اكتب البيانات شارفي ذاكرة الكمبيوتر تحتل دائما 1 بايت. ويرجع ذلك إلى حقيقة أنه عادةً ما يتم إعطاء قيمة نوع الحرف أكبر قدر من الذاكرة اللازمة لتخزين أي من أحرف لوحة المفاتيح البالغ عددها 256 حرفًا.
يمكن أن يكون نوع الحرف وقعتأو غير موقعة.
بكميات موقعة توقيع شاريمكنك تخزين القيم في النطاق من -128 إلى 127. وفقًا لذلك ، قيم متغيرات النوع حرف غير موقّعيمكن أن تتراوح من 0 إلى 255.
نوع البيانات مدى القيمة الحجم
شار -128...+127 1 بايت
حرف غير موقّع 0...255 1 بايت
توقيع شار -128...127 1 بايت

عند العمل باستخدام بيانات الأحرف ، تذكر أنه إذا كان التعبير يحتوي على رمز واحد، يجب أن يتم تضمينه في ونقلت واحدة. تسلسل الأحرف ، أي سلسلة ، عند استخدامها في التعبيرات هو في اقتباسات مزدوجة. على سبيل المثال: "F" ، "3" ، "Ivan" ، "235"

نوع عدد صحيح

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

نطاقات قيمة أنواع عدد صحيح

نوع البيانات مدى القيمة الحجم (بايت)
int
وقعت int
وقعت كثافة العمليات الطويلة
-2147483648 ... 2147483647 4
عدد صحيح غير موقعة
كثافة العمليات طويلة بدون توقيع
0 ... 4294967295 4
كثافة العمليات قصيرة
وقعت قصيرة كثافة العمليات
-32768 ... 32767 2
كثافة العمليات قصيرة بدون توقيع 0... 65535 2
كثافة العمليات الطويلة \(-(2^{63}-1)...(2^{63}-1)\) 8
طويل بدون توقيع
كثافة العمليات طويلة
\(0...(2^{64}-1)\) 8

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

يختلف التمثيل الداخلي للرقم الحقيقي في ذاكرة الكمبيوتر عن تمثيل العدد الصحيح. يتم تمثيل رقم النقطة العائمة في شكل أسي. $$ \ pm mE \ pm p $$ أين م- الجزء العشري (رقم كامل أو كسري بعلامة عشرية) ، ص- ترتيب (عدد صحيح). لتحويل رقم في شكل أسي إلى التمثيل المعتاد ذي النقطة الثابتة ، من الضروري مضاعفة الجزء العشري بمقدار عشرة للأس على سبيل المثال: \ (- 6.42E + 2 = -6.42 * 10 ^ (2) \)

نطاقات القيمة من الأنواع الحقيقية

نوع البيانات مدى القيمة الحجم (بايت)
يطفو 3.4E-38 ... 3.4E + 38 4
مزدوج 1.7E-308 ... 1.7E + 308 8
مزدوج طويل 3.4E-4932 ... 3.4E + 4932 10

يحدد طول الجزء العشري دقة الرقم ، بينما يحدد طول الأس نطاقه.
تشغل بيانات النوع العائم 4 بايت ، منها 1 بتة مخصصة للإشارة ، و 8 بتات للأس ، و 23 بتًا للجزء العشري. نظرًا لأن أعلى رقم في الجزء العشري هو دائمًا 1 ، فلن يتم تخزينه.
تشغل البيانات من النوع المزدوج 8 بايت ، وتحتوي على -11 بت للترتيب و -52 بت للعظم العشري ، على التوالي.
يشير محدد النوع الطويل قبل اسم النوع المزدوج إلى تخصيص 10 بايت للقيمة.

نوع منطقي

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

اكتب باطل (فارغ)

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

إعلان المتغيرات

عاملهي قطعة ذاكرة مسماة تخزن قيمة من نوع معين.
المتغير له اسم(المعرف) و المعنى.
اسميستخدم للوصول إلى منطقة الذاكرة حيث يتم تخزين القيمة.
اسم(المعرف) عبارة عن مجموعة من الأحرف والأرقام والشرطات السفلية التي تحدد اسم المتغير أو اسم الوظيفة أو الكلمة الأساسية في البرنامج. لغة C / C ++ حساسة لحالة الأحرف (أي سيتم التعامل مع المجموع والمبلغ كمتغيرين مختلفين).
أين، نوع من- كلمة أساسية تحدد مقدار الذاكرة (عدد البايتات) المخصصة لتخزين قيمة متغير (ككائن برنامج) ، (int - عدد صحيح ، عائم ، مزدوج - حقيقي ، حرف - حرف ، منطقي) ؛
اسم- معرف متغير فريد يحدد العنوان الرمزي لكائن البرنامج في ذاكرة الكمبيوتر ؛
البادئ- القيمة الأولية للمتغير ، والتي قد لا تكون في الوصف.
على سبيل المثال: المتغيرات من نفس النوع يمكن تجميعها بفصل "،". وصف المتغيرات من الأنواع المختلفة مفصول بعلامة "؛ ".
وفقًا لمكان الإعلان ، يمكن تقسيم المتغيرات في لغة C / C ++ إلى ثلاث فئات:
  1. محلي - معلنة داخل الوظيفة ومتاحة فقط فيها ؛
  2. عالمي - يتم وصفها قبل جميع الوظائف ومتاحة من أي مكان في البرنامج ؛
  3. يتم وصف المعلمات الرسمية للوظائف في قائمة معلمات الوظيفة.
مثال:

نوع صحيح (int)

اكتب الحجم intلم يتم تعريفه بالمعيار ، ولكنه يعتمد على الكمبيوتر والمجمع.

بالنسبة لمعالج 16 بت ، يتم تخصيص 2 بايت لقيم من هذا النوع ،

لـ 32 بت - 4 بايت.

محدد قصيرةأمام اسم النوع يشير إلى المترجم أن 2 بايت مطلوبة للرقم ، بغض النظر عن درجة المعالج.

محدد طويليعني أن قيمة العدد الصحيح ستأخذ 4 بايت.

وبالتالي ، على جهاز كمبيوتر 16 بت ، فإن معادلات int و short int ،

وعلى 32 بت ، كثافة العمليات وطويلة.

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

تكون ثوابت النقطة العائمة من النوع المزدوج افتراضيًا. يمكنك تحديد نوع ثابت بشكل صريح باستخدام اللواحق F و f (عائم) و L و l (طويل).

على سبيل المثال ، سيكون الثابت 2E + 6L من النوع long double ، والثابت 1.82f سيكون من النوع float.

عند كتابة برامج عالمية لمنصات مختلفة ، لا يمكنك وضع افتراضات حول حجم النوع int.للحصول عليه ، تحتاج إلى استخدام حجم عامل التشغيل ، الذي يُرجع حجم النوع بالبايت.

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

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

sizeof (تعويم) ≤ slzeof (مزدوج) ≤ sizeof (مزدوج طويل)
sizeof (char) slzeof (قصير) ≤ sizeof (int) sizeof (long)

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

نوع باطل

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

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

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

هيكل البرنامج

يتكون برنامج C ++ من المهام, الأوصافو توجيهات المعالج. يجب تسمية إحدى الوظائف رئيسي. يبدأ تنفيذ البرنامج بالبيان الأول لهذه الوظيفة. أبسط تعريف للدالة له التنسيق التالي:

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

  • إذا لم تُرجع الدالة قيمة ، فسيتم تحديد نوع الفراغ:
  • جسم الوظيفة عبارة عن كتلة ولذلك فهو مُحاط بأقواس معقوفة ؛
  • لا يمكن أن تتداخل الوظائف ؛
  • تنتهي كل عبارة بفاصلة منقوطة (باستثناء العبارة المركبة).

مثال على هيكل البرنامج الذي يحتوي على الوظائف main و fl و f2:

قد يتكون البرنامج من عدة وحدات(ملفات المصدر).

ملاحظات حول I / O في C ++

لا تحتوي لغة C ++ على تسهيلات إدخال / إخراج مضمنة - يتم ذلك باستخدام الوظائف والأنواع والكائنات الموجودة في المكتبات القياسية.

يتم استخدام طريقتين: الوظائف الموروثة من لغة C ، وكائنات C ++.

وظائف الإدخال / الإخراج الأساسية بنمط C:

int scanf (تنسيق حرف * ثابت ، ...) // إدخال
int printf (تنسيق حرف * ، ...) // إخراج

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

مثال على برنامج يستخدم وظائف الإدخال / الإخراج على النمط C:

#تضمن
انت مين() (
إنت أنا
printf ("أدخل عددًا صحيحًا \ n")؛
scanf ("٪ d" ، & i) ؛
printf ("لقد أدخلت الرقم٪ d ، شكرًا!" ، i) ؛
العودة 0 ؛
}

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

السطر الثالث هو وصف لمتغير نوع عدد صحيح يسمى i.

تقوم وظيفة printf في السطر الرابع بطباعة المطالبة "أدخل عددًا صحيحًا" وتنتقل إلى سطر جديد وفقًا \ n لتسلسل الهروب. تخزن وظيفة scanf العدد الصحيح الذي تم إدخاله من لوحة المفاتيح في المتغير i (تعني العلامة & عملية الحصول على العنوان) ، وتعرض العبارة التالية السلسلة المحددة فيها ، لتحل محل مواصفات التحويل بقيمة هذا الرقم.

برنامج باستخدام مكتبة فئة C ++:

#تضمن
انت مين() (
إنت أنا
كوت<< "Введите целое число"؛ سينما >> ط ؛
كوت<< "Вы ввели число " << i << ", спасибо!";
العودة 0 ؛
}

يحتوي ملف الرأس على وصف لمجموعة من الفئات لإدارة الإدخال / الإخراج. يحدد كائنات تيار القياسية سينلإدخال لوحة المفاتيح و كوتللعرض على الشاشة ، وكذلك عمليات البث< < и чтения из потока >>.

يمكنك استخدام كلتا الطريقتين لتنظيم الإدخال / الإخراج ، لكن لا يوصى بدمجهما في برنامج واحد.

نوع البيانات في البرمجة عبارة عن مجموعة من مجموعتين: مجموعة من القيم ومجموعة من العمليات التي يمكن تطبيقها عليها. على سبيل المثال ، يمكن تطبيق نوع بيانات العدد الصحيح غير السالب ، والذي يتكون من مجموعة محدودة من الأرقام الطبيعية ، على عمليات الجمع (+) ، والضرب (*) ، والقسمة الصحيحة (/) ، والباقي (٪) ، و الطرح (-).

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

  • منطقي (منطقي) ؛
  • شخصية (على سبيل المثال ، شار) ؛
  • عدد صحيح (على سبيل المثال int) ؛
  • النقطة العائمة (مثل العائمة) ؛
  • تعدادات (يحددها المبرمج) ؛
  • فارغ .

علاوة على ما سبق ، تم بناء الأنواع التالية:

  • مؤشرات (على سبيل المثال ، int *) ؛
  • المصفوفات (مثل char) ؛
  • مرجع (مثل مزدوج &) ؛
  • هياكل أخرى.

دعنا ننتقل إلى مفهوم الحرفي (على سبيل المثال ، 1 ، 2.4F ، 25e-4 ، "a" ، إلخ.): الحرفي هو إدخال في الكود المصدري لبرنامج يمثل قيمة ثابتة. بمعنى آخر ، الحرف الحرفي هو ببساطة تمثيل كائن (قيمة) من نوع ما في كود البرنامج. لغة C ++ لديها القدرة على كتابة القيم الصحيحة ، قيم الفاصلة العائمة ، الحرف ، القيم المنطقية ، قيم السلسلة.

يمكن كتابة نوع حرفي صحيح على النحو التالي:

  • نظام الرقم العاشر. على سبيل المثال ، 1205 ؛
  • نظام الرقم الثامن بصيغة 0 + رقم. على سبيل المثال ، 0142 ؛
  • نظام الرقم السادس عشر بالتنسيق 0x + number. على سبيل المثال ، 0x2F.

24 ، 030 ، 0x18 كلها إدخالات من نفس الرقم في أنظمة الأرقام المختلفة.
لكتابة أرقام الفاصلة العائمة ، يتم استخدام التدوين النقطي: 0.1 ، .5 ، 4. - إما في
التدوين الأسي - 25e-100. يجب ألا تكون هناك مسافات في مثل هذا السجل.

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

مثال const int = 3 ؛ // هنا const - محدد // int - نوع أساسي // مثال - اسم متغير // = 3 - مُهيئ.

اسم المتغير هو سلسلة من الأحرف من الأبجدية اللاتينية (الأحرف الصغيرة والكبيرة) ، والأرقام و / أو الشرطات السفلية ، ولكن لا يمكن أن يكون الحرف الأول رقمًا. يجب اختيار اسم المتغير بطريقة تسهل دائمًا تخمين ما يخزنه ، على سبيل المثال ، "monthPayment". في الملخص والعملي ، سنستخدم تدوين CamelCase لقواعد كتابة المتغيرات. لا يمكن أن يتطابق اسم المتغير مع الكلمات المحجوزة في اللغة ، أمثلة على هذه الكلمات: if ، while ، function ، goto ، switch ، إلخ.

يمكن أن يحتوي المُعلن ، بالإضافة إلى اسم المتغير ، على أحرف إضافية:

  • * - مؤشر قبل الاسم
  • * ثابت - مؤشر ثابت ؛ قبل الاسم
  • & - حلقة الوصل؛ قبل الاسم
  • - مجموعة مصفوفة؛ بعد الاسم
  • () - وظيفة؛ بعد الاسم.

يسمح لك المُهيئ بتحديد قيمة المتغير مباشرة بعد الإعلان. يبدأ المُهيئ بحرف يساوي (=) ثم تتم عملية تحديد قيمة المتغير. بشكل عام ، تشير علامة المساواة في C ++ إلى عملية الإسناد ؛ يمكن استخدامه لتعيين قيمة المتغير وتغييرها. قد يكون مختلفًا لأنواع مختلفة.

يحدد المحدد سمات إضافية غير النوع. يسمح لك محدد الثابت الوارد في المثال بمنع التغييرات اللاحقة على قيمة المتغير. تسمى هذه المتغيرات الثابتة ثابتة أو ثابتة.

إعلان ثابت بدون تهيئة لن يعمل لأسباب منطقية:

Const int EMPTY_CONST ، // خطأ ، متغير ثابت غير مهيأ const int EXAMPLE = 2 ؛ // ثابت بقيمة 2 مثال = 3 ؛ // خطأ ، حاول تعيين قيمة لمتغير ثابت

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

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

عند تشريح كل نوع ، يجب على القارئ أن يتذكر تحديد نوع البيانات.

1. نوع صحيح (char ، short (int) ، int ، long (int) ، long long)

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

  • 2 8N = 2 8 * 1 = 256 ، حيث N هو مقدار الذاكرة بالبايت لتخزين القيمة

في مثل هذه الحالة ، تكون نطاقات الأعداد الصحيحة المتوفرة كما يلي:

  • - للحرف غير الموقعة
  • [-128..127] - للحصول على حرف موقّع

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

قيم طويلة بدون توقيع // يحدد عددًا صحيحًا (طويلًا) من النوع بدون إشارة.

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

  • 1 = حجم الحرف ، حجم قصير ، حجم صغير ، حجم طويل.

عادة ما تكون أحجام الأنواع كما يلي: char - 1 ، short - 2 ، int - 4 ، long - 8 ، long - 8 bytes.

يمكنك إجراء عمليات حسابية بقيم نوع عدد صحيح: + ، - ، * ، / ،٪ ؛ عمليات المقارنة: == ،! = ،<=, <, >،> = ؛ عمليات البت: & ، | ، xor ،<<, >>.
يسهل فهم معظم العمليات مثل عمليات الجمع والضرب والطرح والمقارنة. في بعض الأحيان ، بعد إجراء العمليات الحسابية ، قد تكون النتيجة خارج نطاق القيم ؛ في هذه الحالة سيعطي البرنامج خطأ.
إيجاد القسمة الصحيحة (/) الجزء الصحيح لقسمة عدد صحيح على آخر. فمثلا:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

يشير رمز النسبة المئوية (٪) إلى عملية تحديد باقي قسمة عددين صحيحين:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

أكثر صعوبة في فهم العمليات هي طريقة البت: & (AND) ، | (أو) ، xor (حصريًا أو) ،<< (побитовый сдвиг влево), >> (التحول الأيمن باتجاه أحادي).

تطبق عمليات البت AND و OR و XOR العملية المنطقية المقابلة على كل جزء من المعلومات:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 = 01 2 xor 11 2 = 10 2

في معالجة الصور ، يتم استخدام 3 قنوات للون: الأحمر والأزرق والأخضر - بالإضافة إلى الشفافية ، والتي يتم تخزينها في متغير من النوع int ، لأن كل قناة لها نطاق من القيم من 0 إلى 255. في النظام الست عشري ، تتم كتابة القيمة على النحو التالي: 0x180013FF؛ ثم تتوافق القيمة 18 16 مع القناة الحمراء ، 00 16 - أزرق ، 13 16 - أخضر ، FF - قناة ألفا (شفافية). لتحديد قناة معينة من هذا العدد الصحيح ، استخدم ما يسمى ب. قناع ، حيث تكون المواقف التي تهمنا هي F 16 أو 1 2. أي لتسليط الضوء على قيمة القناة الزرقاء ، يجب عليك استخدام قناع ، أي أحادي المعامل AND:

int blue_channel = 0x180013FF & 0x00FF0000 ؛

بعد ذلك ، يتم إزاحة القيمة المستلمة إلى اليمين بالعدد المطلوب من البتات.

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

Char binaryExample = 39 ؛ // 00100111 char نتيجة = binaryExample<< 2; // сдвигаем 2 бита влево, результат: 10011100

إذا كان المتغير من نوع غير موقع ، فستكون النتيجة هي الرقم 156 ، أما المتغير الموقّع فهو يساوي -100. لاحظ أنه بالنسبة لأنواع الأعداد الصحيحة الموقعة ، فإن الوحدة بالترتيب العالي لتمثيل البت هي علامة على أن الرقم سالب. في هذه الحالة ، القيمة في شكل ثنائي تتكون من جميع القيم تتوافق مع -1 ؛ إذا كان الرقم 1 في الرقم الأكثر أهمية فقط ، والأرقام المتبقية عبارة عن أصفار ، فسيكون لهذا الرقم الحد الأدنى لقيمة نوع معين من القيمة: بالنسبة لـ char يكون -128.

2. نوع النقطة العائمة (عائم ، مزدوج (عائم))

مجموعة قيم الفاصلة العائمة هي مجموعة فرعية من الأرقام الحقيقية ، ولكن لا يمكن تمثيل كل رقم حقيقي في ثنائي ، مما يؤدي أحيانًا إلى أخطاء غبية:

قيمة تعويم = 0.2 ؛ القيمة == 0.2 ؛ // خطأ ، القيمة لن تساوي 0.2 هنا.

عند العمل مع متغيرات الفاصلة العائمة ، يجب ألا يستخدم المبرمج عملية المساواة أو عدم المساواة ، وبدلاً من ذلك يستخدمون عادةً اختبارًا للوصول إلى فاصل زمني معين:

القيمة - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

بالإضافة إلى عمليات المقارنة ، يدعم نوع النقطة العائمة 4 عمليات حسابية ، والتي تتوافق تمامًا مع العمليات الحسابية ذات الأرقام الحقيقية.

3. النوع المنطقي (المنطقي) (منطقي)

يتكون من قيمتين فقط: صواب (صواب) وخطأ (خطأ). للعمل مع متغيرات من هذا النوع ، يتم استخدام العمليات المنطقية:! (NOT) ، == (المساواة) ،! = (عدم المساواة) ، && (منطقي AND) ، || (منطقي أو). يمكن العثور على نتيجة كل عملية في جدول الحقيقة المقابل. فمثلا:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

4. نوع الحرف (char، wchar_t)

نوع الحرف ليس فقط نوع عدد صحيح (عادةً ما يسمى هذا النوع بايت) ، ولكنه أيضًا نوع حرف ، يخزن رقم الحرف من الجدول كحرف ASCII. على سبيل المثال ، يتوافق الرمز 0x41 مع الحرف "A" و 0x71 - "t".

في بعض الأحيان يصبح من الضروري استخدام الأحرف التي لم يتم إصلاحها في جدول ASCII وبالتالي تتطلب تخزين أكثر من 1 بايت. هناك حرف واسع (wchar_t) لهم.

5.1 المصفوفات

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

في myArray // مجموعة من 5 عناصر من نوع عدد صحيح

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

احتمالات كثافة العمليات = (1 ، 3 ، 7 ، 9 ، 11) ؛ // تمت تهيئة المصفوفة بـ 5 قيم

للوصول إلى قيمة محددة في مصفوفة (عنصر مصفوفة) ، استخدم عملية الوصول إلى الفهرس () برقم العنصر (تبدأ الأرقام من 0). فمثلا:

احتمال؛ // الوصول إلى العنصر الأول من المصفوفة. إرجاع احتمالات القيمة 1 ؛ // الوصول إلى العنصر الثالث. تُرجع القيمة 7 احتمالات = 13 ؛ // تعيين قيمة جديدة للعنصر الخامس من احتمالات الصفيف ؛ // خطأ في الوصول

5.3 سلاسل

لكتابة سلسلة ، يستخدم المبرمجون فكرة أن السلسلة هي سلسلة متتالية (مصفوفة) من الأحرف. لتحديد نهاية السطر ، يتم استخدام حرف خاص في نهاية السطر: "\ 0". تسمى هذه الأحرف الخاصة ، التي تتكون من شرطة مائلة للخلف وحرف تعريف ، أحرف التحكم أو الهروب. لا يزال هناك ، على سبيل المثال ، "\ n" - بداية سطر جديد ، "\ t" - جدولة. لتسجيل شرطة مائلة للخلف في سطر ما ، يتم استخدام مفتاح escaping - يتم وضع شرطة مائلة أخرى قبل العلامة نفسها: "\". يستخدم الهروب أيضًا لكتابة علامات الاقتباس.

لنقم بإنشاء متغير سلسلة:

Char textExample = ('T'، 'e'، 's'، 't'، '\ 0')؛ // تم كتابة السلسلة "Test"

يوجد تدوين مبسط لتهيئة السلسلة:

Char textExample = "اختبار" ؛ // لم يتم كتابة الحرف الأخير ، لكن الحجم لا يزال 5

بدون الخوض في التفاصيل ، إليك نوع بيانات مفيد آخر - سلسلة. سلاسل
من هذا النوع ، على سبيل المثال ، يمكنك إضافة:

String hello = "Hi،" ؛ stringname = "Max!"؛ سلسلة hello_name = hello + name ؛ // احصل على السلسلة "Hi، Max!"

6. الارتباط

كثافة العمليات أ = 2 ؛ // المتغير "a" يشير إلى القيمة 2 int & b = a؛ // متغير "ب" يشير إلى نفس المكان مثل "أ" ب = 4 ؛ // عن طريق تغيير قيمة b ، يقوم المبرمج بتغيير قيمة a. الآن a = 4 int & c = 4 ؛ // خطأ ، لا يمكنك فعل هذا ، لأن لا يمكن تعيين قيمة للمرجع

7. المؤشر

للتعامل مع هذا النوع من البيانات ، من الضروري أن نتذكر أن مجموعة القيم من هذا النوع هي عناوين خلايا الذاكرة من حيث تبدأ البيانات. يدعم المؤشر أيضًا عمليات الجمع (+) والطرح (-) وإلغاء الإسناد (*).

تعني العناوين 0x0 أن المؤشر فارغ ، أي لا يشير إلى أي بيانات. هذا العنوان له حرفية خاصة به - NULL:

Int * nullPtr = NULL ؛ // مؤشر فارغ

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

تسمى عملية الحصول على البيانات بدءًا من العنوان المخزن في المؤشر dereferencing (*). يقوم البرنامج بقراءة العدد المطلوب من خلايا الذاكرة وإرجاع القيمة المخزنة في الذاكرة.

القيمة Int valueInMemory = 2 ؛ // تعيين متغير من نوع عدد صحيح int * somePtr = // انسخ عنوان المتغير ، هنا & - تُرجع عنوان المتغير somePtr ؛ // عنوان خلية الذاكرة ، على سبيل المثال ، 0x2F * somePtr ؛ // يتم تخزين القيمة في 4 خلايا: 0x2F و 0x30 و 0x31 و 0x32

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

يتم تخزين المؤشر نفسه في الذاكرة ، مثل قيم المتغيرات من الأنواع الأخرى ، ويستغرق 4 بايت ، لذا يمكنك إنشاء مؤشر لمؤشر.

8. التحويلات

التعداد هو النوع الأساسي الوحيد الذي يحدده المبرمج. بشكل عام ، يعد التعداد مجموعة مرتبة من ثوابت الأعداد الصحيحة المسماة ، مع اعتبار اسم التعداد هو النوع الأساسي.

إنوم كولور (أحمر ، أزرق ، أخضر) ؛

بشكل افتراضي ، الأحمر = 0 ، أزرق = 1 ، أخضر = 2. لذلك ، يمكن مقارنة القيم مع بعضها البعض ، أي أحمر< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

تعداد الوصول (القراءة = 1 ، الكتابة = 2 ، EXEC = 4) ؛

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

8 10 = 00001000 2

تشير نتيجة جمع هذه الأرقام معًا دائمًا بوضوح إلى الأرقام التي تمت إضافتها:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

فارغ

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

كائن باطل // خطأ ، لا توجد كائنات من النوع void void // error ، ولا توجد إشارات إلى void * ptr ؛ // حسنًا ، قم بتخزين مؤشر لنوع غير معروف

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

يقذف

غالبًا ما يكون من الضروري تحويل قيمة متغير من نوع إلى آخر. في الحالة التي تكون فيها مجموعة القيم من النوع الأصلي مجموعة فرعية من نوع أكبر (على سبيل المثال ، int هي مجموعة فرعية من long and long عبارة عن مزدوج) ، يمكن للمترجم ضمنيًا ( بشكل ضمني) قم بتغيير نوع القيمة.

عدد صحيح عدد صحيح = 2 ؛ عائم عائم = عدد صحيح ؛ // عائم = 2.0

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

هناك إمكانية تحويل نوع صريح (صريح) ، لهذا ، على يسار المتغير أو أي قيمة من النوع الأصلي ، بين قوسين ، اكتب النوع الذي سيتم إجراء المصبوب عليه:

قيمة int = (int) 2.5 ؛

العمليات الأحادية والثنائية

تسمى العمليات التي أجريناها سابقًا عمليات ثنائية: توجد قيم أو متغيرات على يسار ويمين رمز العملية ، على سبيل المثال ، 2 + 3. في لغات البرمجة ، بالإضافة إلى العمليات الثنائية ، فإنها تستخدم أيضًا العمليات الأحادية التي تنطبق على المتغيرات. يمكن أن تكون إما إلى يسار أو يمين متغير ، وقد تمت مصادفة العديد من هذه العمليات من قبل - عملية dereference (*) وأخذ عنوان المتغير (&) هما أمران وحيدان. عوامل التشغيل "++" و "-" تزيد وتنقص قيمة متغير عدد صحيح بمقدار 1 ، على التوالي ، ويمكن كتابتها إما إلى يسار أو يمين المتغير.

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

أ + = 2 ؛ // مثل a = a + 2 ؛ ب / = 5 ؛ // مثل ب = ب / 5 ؛ ج & = 3 ؛ // مثل c = c & 3 ؛

العلامات: متغيرات C. شار ، كثافة العمليات ، بدون إشارة ، طويل ، طويل ، عائم ، مزدوج ، طويل مزدوج ، تعويم طويل ، نطاق معجمي. تعريف المتغيرات. منطقة الرؤية. التهيئة المتغيرة. أسماء المتغيرات. شكل أسي.

المتغيرات

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

تلقاءي مزدوج int هيكل
فترة راحة آخر طويل تحول
تسجيل typedef شار خارجي
إرجاع فارغ قضية يطفو
غير موقعة إفتراضي إلى عن على وقعت
اتحاد فعل إذا حجم
متطايره استمر تعداد قصيرة
في حين في النسق
فضلا عن عدد من الكلمات الأخرى الخاصة بهذا الإصدار من المترجم على سبيل المثال بعيد, قرب, صغير الحجم, تسربت, asm, asm_إلخ.

على سبيل المثال ، المعرفات الصحيحة
a ، _ ، _1_ ، Sarkasm ، a_long_variable ، aLongVariable ، var19 ، defaultX ، char_type
غير مخلص
1a، $ value، a-long-value، short

لغة C هي لغة حساسة لحالة الأحرف.المتغيرات المسماة a و A ، أو end و END ، أو perfectDark و PerfectDarK هي متغيرات مختلفة.

أنواع المتغيرات

نوع المتغير يحدد

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

كامل

  • شار- حجم 1 بايت. دائما! يجب تذكر هذا.
  • قصيرة- حجم 2 بايت
  • int- حجم 4 بايت
  • طويل- حجم 4 بايت
  • طويل طويل- حجم 8 بايت.
يجب إبداء ملاحظة هنا. لم يتم تحديد حجم المتغيرات في C بشكل صريح على أنه الحجم بالبايت. المعيار ينص فقط على ذلك

شار<= short <= int <= long <= long long

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

الآن دعنا نحدد الحد الأقصى والحد الأدنى للرقم الذي يمكن لمتغير من كل نوع تخزينه. يمكن أن تكون الأعداد موجبة وسالبة. تستخدم الأرقام السالبة بتًا واحدًا لتخزين العلامة. في بعض الأحيان تكون العلامة ضرورية (على سبيل المثال ، نقوم بتخزين حساب مصرفي ، ودرجة حرارة ، وتنسيق ، وما إلى ذلك) ، وأحيانًا لا تكون ضرورية (الوزن ، وحجم المصفوفة ، وعمر الشخص ، وما إلى ذلك). للقيام بذلك ، يستخدم C معدّل النوع موقّعًا وغير موقّع. أحرف غير موقعة - كل 8 بتات تحت الرقم ، في المجموع لدينا مجموعة من الأرقام من 00000000 إلى 11111111 في شكل ثنائي ، أي من 0 إلى 255 حرف موقّع من -128 إلى 128. بشكل افتراضي ، يتم توقيع المتغيرات. لذلك ، فإن كتابة الحرف char و char متكافئ.

فاتورة غير مدفوعة. 1 حجم أنواع الأعداد الصحيحة في C.
نوع من الحجم بايت الحد الأدنى للقيمة القيمة القصوى
حرف غير موقّع 1 0 255
توقيع شار
(شار)
1 -128 127
قصيرة بدون توقيع 2 0 65535
وقع قصير
(قصيرة)
2 -32768 32767
عدد صحيح غير موقعة
(بدون توقيع)
4 0 4294967296
وقعت int
(كثافة العمليات)
4 -2147483648 2147483647
طويل بدون توقيع 4 0 4294967296
وقعت طويلا
(طويل)
4 -2147483648 2147483647
طويلة بدون توقيع 8 0 18446744073709551615
وقعت طويلا
(طويل طويل)
8 -9223372036854775808 9223372036854775807

حجم

يوجد عامل في لغة C يسمح لك بالحصول على حجم متغير بالبايت. sizeof هو متغير ، أو sizeof (متغير) أو sizeof (نوع). إنه عامل ، لأن الوظيفة ليس لديها طريقة للحصول على معلومات حول حجم الأنواع في وقت التشغيل. لنكتب برنامجًا صغيرًا للتحقق من أحجام المتغيرات.

#تضمن #تضمن int main () (char c؛ short s؛ int i؛ long l؛ long long L؛ // استدعاء sizeof كـ "وظيفة" printf ("sizeof (char) =٪ d \ n"، sizeof (c)) ؛ printf ("sizeof (short) =٪ d \ n" ، sizeof (s)) ؛ printf ("sizeof (int) =٪ d \ n" ، sizeof (i)) ؛ printf ("sizeof (long) =٪ d \ n "، sizeof (l))؛ printf (" sizeof (long long) =٪ d \ n "، sizeof (L))؛ // Call as مشغل printf (" sizeof (char) =٪ d \ n "، sizeof c)؛ printf ("sizeof (short) =٪ d \ n"، sizeof s)؛ printf ("sizeof (int) =٪ d \ n"، sizeof i)؛ printf ("sizeof (long) =٪ d \ n "، sizeof l)؛ printf (" sizeof (طويل) =٪ d \ n "، sizeof L)؛ _getch ()؛)

(أعتقد أنه من الواضح أن المتغيرات يمكن أن يكون لها اسم صالح). كان من الممكن كتابة هذا البرنامج بطريقة أبسط.

#تضمن #تضمن int main () (printf ("sizeof (char) =٪ d \ n"، sizeof (char))؛ printf ("sizeof (short) =٪ d \ n"، sizeof (short))؛ printf ("sizeof () int) =٪ d \ n "، sizeof (int))؛ printf (" sizeof (long) =٪ d \ n "، sizeof (long))؛ printf (" sizeof (long long) =٪ d \ n "، sizeof (long)) ؛ // لا يمكن استدعاء sizeof كعامل على اسم النوع // sizeof int - compile error _getch () ؛)

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

أنواع الفاصلة العائمة

  • يطفو- 4 بايت ،
  • تعويم طويل- 8 بايت
  • مزدوج- 8 بايت
  • مزدوج طويل- 8 بايت.
فيما يلي أيضًا قيم VC2012 ، وفقًا للمعيار ، حجم أنواع الطفو<= long float <= double <= long double все числа с плавающей точкой - со знаком.

تجاوز متغير

لا يهتم C بشأن الفائض المتغير. هذا يعني أنه من خلال زيادة قيمة ، على سبيل المثال ، متغير int باستمرار ، سنقوم في النهاية "بإعادة تعيين القيمة"

#تضمن #تضمن void main () (غير موقعة a = 4294967295؛ int b = 2147483647؛ // overflow printf ("٪ u \ n"، a)؛ a + = 1؛ printf ("٪ u"، a)؛ // Overflow طباعة كتابة موقعة ("٪ d \ n"، b)؛ b + = 1؛ printf ("٪ d"، b)؛ getch ()؛)

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

تعيين نوع Postfix

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

  • 11 - رقم النوع int
  • 10 ش - غير موقعة
  • 22 لترًا أو 22 لترًا - طويل
  • 3890LL أو 3890LL - طويل (أيضًا lL أو Ll)
  • 80.0f أو 80.f أو 80.0F - عائم (ضروري للحصول على علامة عشرية في السجل)
  • 3.0 - رقم مزدوج
يشير الترميز الأسي أيضًا إلى عدد من النوع المزدوج بشكل افتراضي. #تضمن #تضمن int main () (printf ("sizeof (int) =٪ d \ n"، sizeof (10))؛ printf ("sizeof (unigned) =٪ d \ n"، sizeof (10u))؛ printf ("sizeof () long) =٪ d \ n "، sizeof (10l))؛ printf (" sizeof (long long) =٪ d \ n "، sizeof (10ll))؛ printf (" sizeof (float) =٪ d \ n "، sizeof (10.f))؛ printf ("sizeof (double) =٪ d \ n"، sizeof (10.))؛ printf ("sizeof (double) =٪ d \ n"، sizeof (10e2))؛ getch () ؛)

ومع ذلك ، لن ينتج عن التعليمات البرمجية التالية أخطاء بسبب وجود تحويل نوع ضمني

كثافة العمليات أ = 10 ش ؛ ز مزدوج = 3.f ؛

تنسيق سداسي عشري وثماني

عند التعامل مع الأرقام ، يمكنك استخدام التمثيلات السداسية العشرية والثمانية. تبدأ الأرقام بالنظام الست عشري بـ 0 x ، في النظام الثماني تبدأ بصفر. وفقًا لذلك ، إذا كان الرقم يبدأ من الصفر ، فلا ينبغي أن يحتوي على أرقام أعلى من 7:

#تضمن #تضمن void main () (int x = 0xFF؛ int y = 077؛ printf ("hex x =٪ x \ n"، x)؛ printf ("dec x =٪ d \ n"، x)؛ printf ("oct x =٪ o \ n "، x)؛ printf (" oct y =٪ o \ n "، y)؛ printf (" dec y =٪ d \ n "، y)؛ printf (" hex y =٪ x "، ذ) ؛ getch () ؛)

التمثيل الأسي للأرقام

الشكل الأسي لتمثيل رقم هو تمثيل رقم في الشكل M e ± p ، حيث م- فرس النبي العدد ، ص- قوة عشرة. في هذه الحالة ، يجب أن يكون للجزء العشري علامة واحدة غير صفرية قبل العلامة العشرية.
على سبيل المثال 1.25 === 1.25e0 ، 123.5 === 1.235e2 ، 0.0002341 === 2.341e-4 إلخ.
المشاهدات 3.2435e7 تعادل 3.2435e + 7
هناك تمثيل آخر ("هندسة") ، حيث يجب أن تكون الدرجة من مضاعفات ثلاثة. على سبيل المثال 1.25 === 1.25e0 ، 123.5 === 123.5e0 ، 0.0002341 === 234.1e-6 ، 0.25873256 === 258.73256e-3 إلخ.

إعلان المتغيرات

في لغة C ، يتم الإعلان عن المتغيرات دائمًا في بداية الكتلة (الكتلة هي جزء من الكود محدد بأقواس معقوفة)

<возвращаемый тип> <имя функции> (<тип> <аргумент>[, <тип> <аргумент>]) (إعلان متغير كل شيء آخر)

عند التصريح عن متغير ، يكتب نوعه واسمه.

الباحث أ ؛ معلمة مزدوجة

يمكنك التصريح عن متغيرات متعددة من نفس النوع بفصل الأسماء بفاصلة

طويل arg1، arg2، arg3 ؛

فمثلا

#تضمن #تضمن int main () (int a = 10؛ int b؛ while (a> 0) (int z = a * a؛ b + = z؛))

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

int main () (int i ؛ i = 10 ؛ int j ؛)

هذا لأن إعلان المتغير يأتي بعد تعليمة الإسناد. عند التصريح عن المتغيرات ، يمكنك تهيئتها على الفور.
كثافة العمليات أنا = 0 ؛
في الوقت نفسه ، لا تعتبر التهيئة عند إعلان متغير بيانًا منفصلاً ، لذا ستعمل الكود التالي

int main () (int i = 10 ؛ int j ؛)

القيمة الأولية للمتغير

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

#تضمن #تضمن int main () (int i؛ printf ("٪ d"، i)؛ getch ()؛)

إذا قمت بتشغيل هذا البرنامج على VC ، فسيظهر تحذير أثناء التنفيذ
فشل فحص وقت التشغيل # 3 - المتغير "i" قيد الاستخدام بدون تهيئة.
إذا قمت بالنقر فوق "متابعة" ، فسيعرض البرنامج "القمامة". في العديد من المجمعين الآخرين ، لن يكون هناك تحذير عند تنفيذ البرنامج.

نطاق متغير

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

#تضمن #تضمن كثافة العمليات العالمية = 100 ؛ void foo () (printf ("foo:٪ d \ n"، global)؛) شريط باطل (int global) (printf ("bar:٪ d \ n"، global)؛) int main () (foo () ؛ شريط (333)؛ getch ()؛)

سيعرض
فو: 100
شريط: 333
هنا متغير عالمي عالميمرئي لجميع الوظائف. لكن وسيطة الدالة تحل محل المتغير العام ، لذا فإن تمرير المتغير 333 يطبع القيمة المحلية 333.
هنا مثال آخر

#تضمن #تضمن كثافة العمليات العالمية = 100 ؛ int main () (int global = 555؛ printf ("٪ d \ n"، global)؛ getch ()؛)

سيقوم البرنامج بطباعة 555. كما في الحالة السابقة ، المتغير المحلي "أكثر أهمية". المتغير المعلن في بعض النطاقات غير مرئي خارجه ، على سبيل المثال

#تضمن #تضمن كثافة العمليات العالمية = 100 ؛ int main () (int x = 10 ؛ (int y = 30 ؛ printf ("٪ d" ، x) ؛) printf ("٪ d" ، y) ؛)

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

#تضمن #تضمن كثافة العمليات العالمية = 100 ؛ int main () (int x = 10؛ (int x = 20؛ (int x = 30؛ printf ("٪ d \ n"، x)؛) printf ("٪ d \ n"، x)؛) printf ( "٪ d \ n" ، x) ؛ getch () ؛)

سيخرج البرنامج
30
20
10
يجب تجنب المتغيرات العالمية. يمكنك سماع هذا كثيرًا. دعنا نحاول معرفة السبب. في مشاريعك البسيطة ، تبدو المتغيرات العامة طبيعية تمامًا. لكن تخيل أن لديك تطبيقًا

  • 1) تم تطويره بواسطة عدة أشخاص ويتكون من مئات الآلاف من أسطر التعليمات البرمجية
  • 2) يعمل في خيوط متعددة

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

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

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

الجدول 1 - أنواع بيانات C ++
نوع من بايت مجموعة من القيم المقبولة

عدد صحيح (منطقي) نوع البيانات

منطقي 1 0 / 255

عدد صحيح (حرف) نوع البيانات

شار 1 0 / 255

أنواع البيانات الصحيحة

كثافة العمليات قصيرة 2 -32 768 / 32 767
كثافة العمليات قصيرة بدون توقيع 2 0 / 65 535
int 4
عدد صحيح غير موقعة 4 0 / 4 294 967 295
كثافة العمليات طويلة 4 -2 147 483 648 / 2 147 483 647
كثافة العمليات طويلة بدون توقيع 4 0 / 4 294 967 295

أنواع بيانات الفاصلة العائمة

يطفو 4 -2 147 483 648.0 / 2 147 483 647.0
تعويم طويل 8
مزدوج 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

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

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

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

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

// data_type.cpp: يحدد نقطة الدخول لتطبيق وحدة التحكم. # تضمين "stdafx.h" # تضمين استخدام اسم للمحطة؛ int main (int argc، char * argv) (منطقية منطقية = 25 ؛ // متغير نوع bool اسمه boolean if (boolean) // if عبارة شرط cout<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

في السطر 9أعلن نوع متغيرمنطقي ، والذي تمت تهيئته إلى 25. نظريًا ، بعدالسطر 9، في متغير منطقي يجب أن يحتوي على الرقم 25 ، ولكن في الحقيقة هذا المتغير يحتوي على الرقم 1. كما قلت ، الرقم 0 هو قيمة خاطئة ، الرقم 1 هو قيمة حقيقية. خلاصة القول هي أنه في متغير من النوعمنطقي يمكن أن يحتوي على قيمتين - 0 (خطأ) أو 1 (صواب). بينما تحت نوع البياناتمنطقي يتم تخصيص بايت كامل ، مما يعني أنه متغير من النوعمنطقي يمكن أن تحتوي على أرقام من 0 إلى 255. هناك حاجة إلى قيمتين 0 و 1 فقط لتحديد القيم الخاطئة والصحيحة السؤال الذي يطرح نفسه: "ما هي قيم 253 الأخرى؟".

بناءً على هذا الموقف ، اتفقنا على استخدام الأرقام من 2 إلى 255 كمكافئ للرقم 1 ، أي صحيح. هذا هو بالضبط سبب احتواء المتغير المنطقي على الرقم 25 وليس 1. In الخطوط 10-13تم الإعلان عنه ، والذي ينقل التحكم إلى البيان في السطر 11إذا كان الشرط صحيحًا ، وكان العامل في السطر 13إذا كانت الحالة خاطئة. انظر نتيجة البرنامج في الشكل 1.

صواب = 1 اضغط على أي مفتاح للمتابعة. . .

الشكل 1 - نوع البيانات المنطقية

نوع البيانات شار

نوع البيانات char هو نوع بيانات عدد صحيح يستخدم لتمثيل الأحرف. أي أن كل حرف يتوافق مع رقم معين من النطاق. يُطلق على نوع بيانات char أيضًا نوع بيانات الحرف ، نظرًا لأن التمثيل الرسومي للأحرف في C ++ ممكن بفضل char. لتمثيل الأحرف في C ++ ، يتم تعيين نوع البيانات char بايت واحد ، في بايت واحد - 8 بت ، ثم نرفع اثنين إلى أس 8 ونحصل على القيمة 256 - عدد الأحرف التي يمكن تشفيرها. وبالتالي ، باستخدام نوع البيانات char ، يمكن عرض أي من 256 حرفًا. يتم تمثيل جميع الأحرف المشفرة في.

ASCII (من الكود القياسي الأمريكي لتبادل المعلومات) هو الكود القياسي الأمريكي لتبادل المعلومات.

ضع في اعتبارك برنامجًا يستخدم نوع بيانات char.

// codes.cpp: يحدد نقطة الدخول لتطبيق وحدة التحكم. # تضمين "stdafx.h" # تضمين استخدام اسم للمحطة؛ int main (int argc، char * argv) (رمز char = "a" ؛ // إعلان متغير من نوع char وتهيئته بالرمز "a" cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

حتى في السطر 9متغير اسمهحرف او رمز ، يتم تعيين قيمة الرمز لها"أ" ( كود ASCII). في السطر 10مشغل cout يطبع الحرف الموجود في المتغيررمز . في السطر 11مجموعة سلسلة اسمهسلسلة ، ويتم تعيين حجم المصفوفة ضمنيًا. يتم تخزين سلسلة في مصفوفة سلسلة"موقع الكتروني" . لاحظ أنه عندما حفظنا الرمز في متغير مثلشار ، ثم بعد علامة التساوي نضع علامات اقتباس مفردة ، حيث كتبنا الحرف. عند تهيئة مصفوفة سلسلة مع بعض السلاسل النصية ، توضع علامات الاقتباس المزدوجة بعد علامة التساوي ، حيث تتم كتابة بعض السلاسل النصية. مثل الحرف العادي ، يتم إخراج السلاسل باستخدام عامل التشغيلكوت السطر 12. تظهر نتيجة البرنامج في الشكل 2.

الرمز = سلسلة = موقع ويب اضغط على أي مفتاح للمتابعة. . .

الشكل 2 - نوع البيانات حرف

أنواع البيانات الصحيحة

يتم استخدام أنواع البيانات الصحيحة لتمثيل الأرقام. يوجد بالفعل ستة منهم في الجدول 1: int short int، short int short int، int، unsigned int، long int، long int long int . كل منهم لديهم حجم الذاكرة الخاصة بهم ونطاق القيم المقبولة. اعتمادًا على المترجم ، قد يختلف مقدار الذاكرة المستخدمة ونطاق القيم المقبولة. في الجدول 1 ، يتم أخذ جميع نطاقات القيم المقبولة وأحجام الذاكرة المشغولة للمترجم MVS2010. علاوة على ذلك ، يتم ترتيب جميع أنواع البيانات في الجدول 1 بترتيب تصاعدي لحجم الذاكرة المشغولة ومدى القيم المقبولة. يعتمد نطاق القيم المقبولة ، بطريقة أو بأخرى ، على حجم الذاكرة المشغولة. وفقًا لذلك ، كلما زاد حجم الذاكرة المشغولة ، زاد نطاق القيم المقبولة. أيضًا ، يتغير نطاق القيم المقبولة إذا تم التصريح عن نوع البيانات ببادئة غير موقعة - بدون علامة. تعني البادئة غير الموقعة أن نوع البيانات لا يمكنه تخزين القيم الموقعة ، ومن ثم يتم مضاعفة نطاق القيم الموجبة ، على سبيل المثال ، أنواع البيانات قصيرة int و int short غير موقعة.

بادئات أنواع بيانات الأعداد الصحيحة:

قصيرة البادئة تقصر نوع البيانات التي يتم تطبيقها عن طريق تقليل حجم الذاكرة التي تحتلها ؛

طويل تعمل البادئة على إطالة نوع البيانات التي يتم تطبيقها عليها عن طريق زيادة حجم الذاكرة المشغولة ؛

بدون إشارة (بدون إشارة) - تضاعف البادئة نطاق القيم الموجبة ، بينما لا يمكن تخزين نطاق القيم السالبة في نوع البيانات هذا.

لذلك ، في الواقع ، لدينا نوع واحد من الأعداد الصحيحة لتمثيل الأعداد الصحيحة - هذا هو نوع البيانات int. تؤدي البادئات القصيرة والطويلة وغير الموقعة إلى ظهور مجموعة متنوعة من أنواع بيانات int التي تختلف في حجم الذاكرة المشغولة و (أو) نطاق القيم المقبولة.

أنواع بيانات النقطة العائمة

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

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

// data_types.cpp: يحدد نقطة الدخول لتطبيق وحدة التحكم. # تضمين "stdafx.h" # تضمين // مكتبة معالجة الإدخال / الإخراج # تضمين // header file of mathematical function #include استخدام اسم للمحطة؛ int main (int argc، char * argv) (cout<< " data type " << "byte" << " " << " max value "<< عناوين أعمدة endl // <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

تم نشر هذا البرنامج بحيث يمكنك عرض خصائص أنواع البيانات في نظامك. يجب ألا تفهم الكود ، لأن البرنامج يستخدم عبارات تحكم لا تعرفها على الأرجح حتى الآن. للتعرف السطحي على كود البرنامج ، سأشرح بعض النقاط أدناه. المشغل أو العاملحجم() يحسب عدد البايتات المخصصة لنوع بيانات أو متغير. دورالأسرى (س ، ص) يرفع القيمة x أس y ، هذه الوظيفة متاحة من ملف الرأس . متلاعبات ثابتة و setprecision () متاح من ملف الرأس . تم إصلاح أول واحد , يمرر القيم في شكل ثابت إلى تيار الإخراج. مناوريعرض setprecision (n) n منازل عشرية. يتم حساب القيمة القصوى لبعض أنواع البيانات باستخدام الصيغة التالية:

Max_val_type = 2 ^ (ب * 8-1) - 1 ؛ // لأنواع البيانات ذات الأرقام السالبة والموجبة // حيث ، b هو عدد البايتات المخصصة في الذاكرة لمتغير بنوع البيانات هذا // اضرب في 8 ، نظرًا لوجود 8 بتات في بايت واحد // اطرح 1 بين قوسين ، نظرًا لأن أرقام النطاق يجب أن تنخفض إلى النصف للقيم الموجبة والسالبة // اطرح 1 في النهاية لأن نطاق الأرقام يبدأ من الصفر // أنواع البيانات غير الموقعة max_val_type = 2 ^ (b * 8) - 1 ؛ // لأنواع البيانات ذات الأرقام الموجبة فقط // تفسيرات الصيغة متشابهة ، لا يتم طرح واحد فقط من الأقواس

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

نوع البيانات أقصى قيمة منطقية = 1 255.00 حرفًا = 1 255.00 قصير int = 2 32767.00 عدد قليل بدون إشارة = 2 65535.00 int = 4 2147483647.00 int = 4 4294967295.00 long int = 4 2147483647.00 long int = 4 4294967295.00 عدد مرات التعويم = 4 2147483647.00 double = 8 9223372036854775808.00 اضغط على أي مفتاح للمتابعة. . .

الشكل 3 - أنواع بيانات C ++

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

// اختصار لنوع البيانات int short a1 ؛ // مثل short int long a1 ؛ // نفس طول int بدون توقيع a1 ؛ // مثل int غير موقعة باختصار a1 ؛ // نفس كثافة العمليات القصيرة غير الموقعة

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

المحتويات مقدمة ………………………………………………………………. .3 الفصل الأول. التمثيلات الدينية والأسطورية للمصريين القدماء …………………………………………………… .5 ...

وفقًا للعلماء ، فقد سقط في "أسوأ" مكان يتفق معظم علماء الأحافير الحديثة على أن السبب الرئيسي للوفاة ...

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