انواع پیشرفته (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));
گام های عملی
- بازه عددت را مشخص کن.
- اگر منفی لازم نیست، از
unsignedاستفاده کن. - با
sizeofاندازه ها را بررسی کن.
نکته: اگر فقط کارهای روزمره داری، همان int و double کافی اند. برای جزئیات بیشتر، صفحه حجم حافظه را ببین.
برای تکمیل مسیر، سر بزن به مثال واقعی داده ها و تبدیل نوع. این ها درک «انواع پیشرفته» را بهتر می کنند.
جمع بندی سریع
- «انواع پیشرفته» بازه و اندازه را کنترل می کنند.
unsignedیعنی فقط غیرمنفی.- اندازه ها وابسته به سیستم هستند.
- با
sizeofهمیشه اندازه را چک کن.