انواع داده در c به سیستم گسترده ای که برای اعلان متغیرها یا توابع انواع مختلف استفاده می شود مراجعه می کنند. نوع متغیر تعیین می کند که چقدر فضای اشغال شده در ذخیره سازی و چگونگی تفسیر الگوی بیتی ذخیره شده است.

انواع در C می تواند به شرح زیر طبقه بندی شود –

Sr.No. انواع و شرح
1 انواع پایه

آنها نوع ریاضی هستند و بیشتر به موارد زیر تقسیم می شوند: (a) انواع صحیح و (b) انواع نقطه شناور.

2 انواع شمارش شده

آنها دوباره نوع ریاضی هستند و آنها برای تعریف متغیرهایی استفاده می شوند که تنها می توانند مقادیر عددی گسسته خاصی را در طول برنامه اختصاص دهند.

3 نوع خالی

Type specifier void نشان می دهد که هیچ مقدار در دسترس نیست.

4 انواع مشتق شده

آنها عبارتند از: الف) نوع اشاره گر، (ب) انواع آرایه ها، (ج) انواع ساختارها، (الف) انواع اتحادیه ها و (الف) انواع تابع.

انواع آرایه و انواع ساختارها به طور کلی به عنوان انواع جمع آورده شده اند. نوع تابع نوع نوع بازگشت مقدار تابع را مشخص می کند. ما انواع پایه در بخش زیر را مشاهده می کنیم، جایی که دیگر انواع در فصل های آینده تحت پوشش قرار می گیرند.

انواع صحیح

جدول زیر، جزئیات انواع استاندارد عددی استاندارد با اندازه و محدوده ذخیره سازی آنها را فراهم می کند.

تایپ کنید اندازه ذخیره سازی محدوده ارزش
کاراکتر 1 بایت -128 تا 127 یا 0 تا 255
علامت امضا نشده 1 بایت 0 تا 255
تمبر امضا شده 1 بایت -128 تا 127
int 2 یا 4 بایت -32،768 تا 32،767 یا -2،147،483،648 تا 2،147،483،647
نام مستعار 2 یا 4 بایت 0 تا 65،535 یا 0 تا 4،294،967،295
کوتاه 2 بایت -32،768 تا 32،767
کوتاه بدون علامت 2 بایت 0 تا 65،535
طولانی 8 بایت -9223372036854775808 به 9223372036854775807
بدون امضا طولانی 8 بایت 0 تا 18446744073709551615

برای اندازه دقیق یک نوع یا متغیر در یک پلت فرم خاص، می توانید اپراتور sizeof را استفاده کنید. عبارات sizeof (type) مقدار ذخیره سازی شی یا نوع در بایت را به ارمغان می آورد. با توجه به زیر یک نمونه برای اندازه نوع مختلف در یک ماشین با استفاده از ثابت های مختلف تعریف شده در فایل header header است.

نسخه ی نمایشی زنده

#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;
}

هنگامی که شما برنامه فوق را کامپایل و اجرا میکنید، نتیجه زیر را در لینوکس تولید می کند –

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

انواع نقطه شناور

جدول زیر جزئیات نوع شناور با اندازه های ذخیره شده و محدوده ارزش و دقت آنها را ارائه می دهد.

تایپ کنید اندازه ذخیره سازی محدوده ارزش دقت
شناور 4 بایت 1.2E-38 تا 3.4E + 38 6 رقم اعشاری
دو برابر 8 بایت 2.3E-308 تا 1.7E + 308 15 رقم اعشاری
طولانی دو بار 10 بایت 3.4E-4932 به 1.1E + 4932 19 رقم اعشار

فایل header 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;
}

هنگامی که شما برنامه فوق را کامپایل و اجرا میکنید، نتیجه زیر را در لینوکس تولید می کند –

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 مشخص می کند که هیچ مقدار در دسترس نیست. این در سه حالت مختلف مورد استفاده قرار می گیرد –

Sr.No. انواع و شرح
1 تابع به عنوان محو می شود

توابع مختلفی در C وجود دارد که هیچ ارزشی را نمیدهند یا میتوانی بگوئید که آنها واگذار میشوند. یک تابع بدون مقدار بازگشتی، نوع بازگشت را به عنوان نامعتبر دارد. برای مثال، خروجی void (وضعیت int)؛

2 آرگومانهای عملکرد به عنوان غیرقانونی

توابع مختلف در C وجود دارد که هیچ پارامتری را قبول نمی کنند. تابع بدون پارامتر می تواند یک تابع را بپذیرد. به عنوان مثال، int rand (void

3 اشاره گرها به حصر

اشاره گر نوع void * نشان دهنده آدرس یک شی است، اما نه نوع آن. به عنوان مثال، یک تابع تخصیص حافظه void * malloc (size_t size)؛ یک اشاره گر را به حواله بازگردانده می شود که می تواند به هر نوع داده منتقل شود

 

مطالب جدید در مورد مدیریت حافظه در c

 

 

 

.