القائمة الرئيسية

الصفحات

C - Data Types / أنواع البيانات

 تشير أنواع البيانات في c إلى نظام واسع يستخدم للإعلان عن المتغيرات أو الوظائف من أنواع مختلفة. يحدد نوع المتغير مقدار المساحة التي يشغلها في التخزين وكيف يتم تفسير نمط البت المخزن.

يمكن تصنيف الأنواع في C على النحو التالي -

الأب رقم.أنواع ووصف
1

أنواع أساسية

إنها أنواع حسابية ويتم تصنيفها أيضًا إلى: (أ) أنواع الأعداد الصحيحة و (ب) أنواع الفاصلة العائمة.

2

الأنواع المعدودة

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

3

اكتب باطل

يشير فراغ محدد النوع إلى عدم توفر أي قيمة.

4

الأنواع المشتقة

وهي تشمل (أ) أنواع المؤشرات ، (ب) أنواع الصفيف ، (ج) أنواع الهياكل ، (د) أنواع الاتحاد و (هـ) أنواع الوظائف.

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

أنواع عدد صحيح

يقدم الجدول التالي تفاصيل أنواع الأعداد الصحيحة القياسية مع أحجام التخزين ونطاقات القيمة -

TypeStorage sizeValue range
char1 byte-128 to 127 or 0 to 255
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int2 or 4 bytes-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295
short2 bytes-32,768 to 32,767
unsigned short2 bytes0 to 65,535
long8 bytes or (4bytes for 32 bit OS)-9223372036854775808 to 9223372036854775807
unsigned long8 bytes0 to 18446744073709551615
للحصول على الحجم الدقيق لنوع أو متغير على منصة معينة، يمكنك استخدام sizeof المشغل. ينتج عن تعبيرات sizeof (النوع) حجم تخزين الكائن أو الكتابة بالبايت. فيما يلي مثال للحصول على حجم من نوع مختلف على جهاز باستخدام ثابت مختلف محدد في ملف العنوان limits.h -

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {

    printf("CHAR_BIT    :   %d\n", CHAR_BIT);
    printf("CHAR_MAX    :   %d\n", CHAR_MAX);
    printf("CHAR_MIN    :   %d\n", CHAR_MIN);
    printf("INT_MAX     :   %d\n", INT_MAX);
    printf("INT_MIN     :   %d\n", INT_MIN);
    printf("LONG_MAX    :   %ld\n", (long) LONG_MAX);
    printf("LONG_MIN    :   %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX   :   %d\n", SCHAR_MAX);
    printf("SCHAR_MIN   :   %d\n", SCHAR_MIN);
    printf("SHRT_MAX    :   %d\n", SHRT_MAX);
    printf("SHRT_MIN    :   %d\n", SHRT_MIN);
    printf("UCHAR_MAX   :   %d\n", UCHAR_MAX);
    printf("UINT_MAX    :   %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX   :   %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX   :   %d\n", (unsigned short) USHRT_MAX);

    return 0;
}

عندما تقوم بترجمة وتنفيذ البرنامج أعلاه ، فإنه ينتج النتيجة التالية على Linux -

CHAR_BIT    :   8
CHAR_MAX    :   127
CHAR_MIN    :   -128
INT_MAX     :   2147483647
INT_MIN     :   -2147483648
LONG_MAX    :   9223372036854775807
LONG_MIN    :   -9223372036854775808
SCHAR_MAX   :   127
SCHAR_MIN   :   -128
SHRT_MAX    :   32767
SHRT_MIN    :   -32768
UCHAR_MAX   :   255
UINT_MAX    :   4294967295
ULONG_MAX   :   18446744073709551615
USHRT_MAX   :   65535

أنواع النقطة العائمة

يقدم الجدول التالي تفاصيل أنواع النقطة العائمة القياسية مع أحجام التخزين ونطاقات القيم ودقتها -
TypeStorage sizeValue rangePrecision
float4 byte1.2E-38 to 3.4E+386 decimal places
double8 byte2.3E-308 to 1.7E+30815 decimal places
long double10 byte3.4E-4932 to 1.1E+493219 decimal places
يحدد ملف الرأس float.h وحدات الماكرو التي تسمح لك باستخدام هذه القيم وتفاصيل أخرى حول التمثيل الثنائي للأرقام الحقيقية في برامجك. المثال التالي يطبع مساحة التخزين التي يشغلها نوع عائم وقيم نطاقه -

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {

    printf("Storage size for float : %d \n", sizeof(float));
    printf("FLT_MAX     :   %g\n", (float) FLT_MAX);
    printf("FLT_MIN     :   %g\n", (float) FLT_MIN);
    printf("-FLT_MAX    :   %g\n", (float) -FLT_MAX);
    printf("-FLT_MIN    :   %g\n", (float) -FLT_MIN);
    printf("DBL_MAX     :   %g\n", (double) DBL_MAX);
    printf("DBL_MIN     :   %g\n", (double) DBL_MIN);
    printf("-DBL_MAX     :  %g\n", (double) -DBL_MAX);
    printf("Precision value: %d\n", FLT_DIG );

    return 0; }
عندما تقوم بترجمة وتنفيذ البرنامج أعلاه ، فإنه ينتج النتيجة التالية على Linux -
Storage size for float : 4 
FLT_MAX      :   3.40282e+38
FLT_MIN      :   1.17549e-38
-FLT_MAX     :   -3.40282e+38
-FLT_MIN     :   -1.17549e-38
DBL_MAX      :   1.79769e+308
DBL_MIN      :   2.22507e-308
-DBL_MAX     :  -1.79769e+308
Precision value: 6

نوع الفراغ (void)

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

الأب رقم.أنواع ووصف
1

ترجع الدالة على أنها باطلة

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

2

الحجج الدالة على أنها باطلة

توجد وظائف مختلفة في لغة C لا تقبل أي متغير. يمكن للدالة التي لا تحتوي على معلمة قبول الفراغ. على سبيل المثال ، int rand (void) ؛

3

مؤشرات للإبطال

يمثل مؤشر type void * عنوان الكائن ، ولكن ليس نوعه. على سبيل المثال ، وظيفة تخصيص الذاكرة باطلة * malloc (size_t size) ؛ إرجاع مؤشر إلى الفراغ والذي يمكن تحويله إلى أي نوع بيانات.

     
 الصفحة التالية                                                                                      الصفحة السابقة  
هل اعجبك الموضوع :

تعليقات