فهرست سرفصل‌های C
خانه (Home) مقدمه (Intro) شروع کار (Get Started) سینتکس (Syntax) دستورات (Statements) خروجی متن (Print Text) خط های جدید (New Lines) کامنت ها (Comments) ساخت متغیرها (Create Variables) مشخص کننده های فرمت (Format Specifiers) تغییر مقدارها (Change Values) چند متغیر (Multiple Variables) نام گذاری متغیرها (Variable Names) نمونه واقعی متغیرها (Real-Life Examples) انواع داده (Data Types) کاراکترها (Characters) اعداد (Numbers) دقت اعشاری (Decimal Precision) حجم حافظه (Memory Size) مثال واقعی داده ها (Real-Life Example) تبدیل نوع (Type Conversion) انواع پیشرفته (Extended Types) ثابت ها (Constants) عملگرها (Operators) عملگرهای حسابی (Arithmetic) عملگرهای انتساب (Assignment) عملگرهای مقایسه (Comparison) عملگرهای منطقی (Logical) اولویت عملگرها (Precedence) بولین ها (Booleans) مثال واقعی بولین ها (Real-Life Examples) شرط ها – if (if) else else if نوشتار کوتاه if (Short Hand If) if تو در تو (Nested If) عملگرهای منطقی در شرط ها (Logical Operators) مثال واقعی شرط ها (Real-Life Examples) سوئیچ (Switch) حلقه while (While Loop) حلقه do-while (Do/While Loop) مثال واقعی while (Real-Life Examples) حلقه for (For Loop) حلقه های تو در تو (Nested Loops) مثال واقعی for (Real-Life Examples) دستور break/continue (Break/Continue) آرایه ها (Arrays) اندازه آرایه (Array Size) حلقه روی آرایه (Array Loops) مثال واقعی آرایه (Real-Life Example) آرایه چندبعدی (Multidimensional Arrays) رشته ها (Strings) کاراکترهای خاص (Special Characters) توابع رشته (String Functions) ورودی کاربر (User Input) آدرس حافظه (Memory Address) پوینترها (Pointers) پوینتر و آرایه ها (Pointers & Arrays) حساب پوینتر (Pointer Arithmetic) پوینتر به پوینتر (Pointer to Pointer) توابع (Functions) پارامترهای تابع (Function Parameters) حوزه متغیرها (Scope) اعلان تابع (Function Declaration) توابع ریاضی (Math Functions) توابع inline (Inline Functions) بازگشت (Recursion) پوینترهای تابع (Function Pointers) تابع callback (Callback Functions) ایجاد فایل (Create Files) نوشتن در فایل (Write To Files) خواندن فایل (Read Files) ساختارها (Structures) ساختار تو در تو (Nested Structures) ساختار و پوینترها (Structs & Pointers) یونیون ها (Unions) typedef پدینگ ساختار (Struct Padding) انوم ها (Enums) مدیریت حافظه (Memory Management) اختصاص حافظه (Allocate Memory) دسترسی به حافظه (Access Memory) تخصیص مجدد (Reallocate Memory) آزادسازی حافظه (Deallocate Memory) ساختارها و حافظه (Structs and Memory) مثال حافظه (Memory Example) خطاها (Errors) دیباگ (Debugging) مقدار NULL مدیریت خطا (Error Handling) اعتبارسنجی ورودی (Input Validation) تاریخ و زمان (Date) اعداد تصادفی (Random Numbers) ماکروها (Macros) سازماندهی کد (Organize Code) کلاس های ذخیره سازی (Storage Classes) عملگرهای بیتی (Bitwise Operators) اعداد ثابت عرض (Fixed-width Integers) پروژه ها (Projects) مرجع (Reference) کلمات کلیدی (Keywords) stdio.h stdlib.h string.h math.h ctype.h time.h مثال ها (Examples) مثال های واقعی (Real-Life Examples) تمرین ها (Exercises) آزمون (Quiz) کامپایلر آنلاین (Compiler) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
C

C — انواع پیشرفته (Extended Types)

آخرین بروزرسانی: 1404/08/14

انواع پیشرفته (Extended Types)

گاهی به عددهای خیلی بزرگ یا دقیق نیاز داری. اینجا «انواع پیشرفته (Extended Types)» کمک می کنند. این انواع اندازه عدد و علامتِ منفی را کنترل می کنند.

مرور سریع انواع پیشرفته

کلمات کلیدی short، long و unsigned اندازه و بازه را عوض می کنند. «unsigned» یعنی فقط صفر و مثبت ذخیره می شود.

نکته: اندازه ها به سیستم و کامپایلر وابسته اند. ممکن است 2، 4 یا 8 بایت باشند.

ساخت و چاپ انواع پیشرفته

نمونه ساده از ساخت هر نوع و چاپ با فرمت مناسب:

int normalInt = 1000;
double normalDouble = 3.14;
short int small = -100;
unsigned int count = 25;
long int big = 1234567890;
long long int veryBig = 9223372036854775807LL;
unsigned long long int huge = 18446744073709551615ULL;
long double precise = 3.141592653589793238L;
printf("Normal int: %d\n", normalInt);
printf("Normal double: %lf\n", normalDouble);
printf("Small: %hd\n", small);
printf("Count: %u\n", count);
printf("Big: %ld\n", big);
printf("Very Big: %lld\n", veryBig);
printf("Huge: %llu\n", huge);
printf("Precise: %Lf\n", precise);

مشاهده در ادیتور

هشدار: به پسوند عددهای خیلی بزرگ دقت کن: برای long long از LL و برای unsigned long long از ULL استفاده کن تا نوع درست شود.

اندازه حافظه با sizeof

برای فهمیدن اندازه واقعی روی دستگاهت، از عملگر sizeof استفاده کن. چاپ با %zu امن تر است.

printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of double: %zu bytes\n", sizeof(double));
printf("Size of short int: %zu bytes\n", sizeof(short int));
printf("Size of unsigned int: %zu bytes\n", sizeof(unsigned int));
printf("Size of long int: %zu bytes\n", sizeof(long int));
printf("Size of long long int: %zu bytes\n", sizeof(long long int));
printf("Size of unsigned long long int: %zu bytes\n", sizeof(unsigned long long int));
printf("Size of long double: %zu bytes\n", sizeof(long double));

مشاهده در ادیتور

گام های عملی

  1. بازه عددت را مشخص کن.
  2. اگر منفی لازم نیست، از unsigned استفاده کن.
  3. با sizeof اندازه ها را بررسی کن.

نکته: اگر فقط کارهای روزمره داری، همان int و double کافی اند. برای جزئیات بیشتر، صفحه حجم حافظه را ببین.

برای تکمیل مسیر، سر بزن به مثال واقعی داده ها و تبدیل نوع. این ها درک «انواع پیشرفته» را بهتر می کنند.

جمع بندی سریع

  • «انواع پیشرفته» بازه و اندازه را کنترل می کنند.
  • unsigned یعنی فقط غیرمنفی.
  • اندازه ها وابسته به سیستم هستند.
  • با sizeof همیشه اندازه را چک کن.