في لغة C، تُعتبر "أنواع البيانات" (Data Types) من المفاهيم الأساسية والمهمة للغاية. فهي تُحدد نوع البيانات التي يمكن تخزينها في متغير ما، وحجم الذاكرة التي سيشغلها هذا المتغير، وكيفية تفسير هذه البيانات. بمعنى آخر، تُخبر أنواع البيانات المُترجم (Compiler) بكيفية التعامل مع البيانات المُخزنة في الذاكرة.

أهمية أنواع البيانات:

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

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

تُوفر لغة C مجموعة من أنواع البيانات الأساسية التي يُمكن استخدامها لتخزين أنواع مختلفة من البيانات:

  • int (عدد صحيح): يُستخدم لتخزين الأعداد الصحيحة (بدون كسور عشرية)، مثل 10، -5، 0، 1000.
  • float (عدد عشري): يُستخدم لتخزين الأعداد العشرية (مع كسور عشرية)، مثل 3.14، -2.5، 0.001.
  • double (عدد عشري مضاعف): يُشبه float ولكنه يُوفر دقة أكبر في تمثيل الأعداد العشرية، حيث يشغل حجم ذاكرة أكبر.
  • char (حرف): يُستخدم لتخزين حرف واحد، مثل 'A'، 'b'، '5'، '$'. يتم تمثيل الأحرف في الذاكرة كأعداد صحيحة وفقًا لجدول ASCII.
  • _Bool (قيمة منطقية): يُستخدم لتخزين القيم المنطقية، إما true (صحيح) أو false (خاطئ).

مُعدِّلات أنواع البيانات:

يُمكن استخدام مُعدِّلات لتغيير خصائص أنواع البيانات الأساسية، مثل:

  • signed (مُوقَّع): يُستخدم لتحديد أن المتغير يُمكن أن يحمل قيمًا موجبة وسالبة (الافتراضي للأعداد الصحيحة).
  • unsigned (غير مُوقَّع): يُستخدم لتحديد أن المتغير يُمكن أن يحمل قيمًا موجبة فقط.
  • short (قصير): يُستخدم لتقليل حجم الذاكرة المُخصصة للمتغير (يُستخدم مع int).
  • long (طويل): يُستخدم لزيادة حجم الذاكرة المُخصصة للمتغير (يُستخدم مع int و double).

أمثلة:

  • int age; // تعريف متغير اسمه age من نوع عدد صحيح.
  • float price; // تعريف متغير اسمه price من نوع عدد عشري.
  • char initial; // تعريف متغير اسمه initial من نوع حرف.
  • unsigned int counter; // تعريف متغير اسمه counter من نوع عدد صحيح غير مُوقَّع.
  • long double pi; // تعريف متغير اسمه pi من نوع عدد عشري مضاعف ذو دقة عالية.