نوع داده size_t در آردوینو — آموزش اندازه‌ها و شمارنده‌های ایمن  
آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران | آموزش تخصصی آردوینو به فارسی

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

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 23
  • بازدید دیروز : 24
  • بازدید کل : 14841

نوع داده size_t در آردوینو — آموزش اندازه‌ها و شمارنده‌های ایمن


نوع داده size_t در آردوینو — آموزش اندازه‌ها و شمارنده‌های ایمن

نوع داده size_t در آردوینو — نوعی که همیشه مثبت است و برای اندازه‌ها طراحی شده

size_t چیست؟

در آردوینو، size_t یک نوع داده‌ی صحیح بدون علامت (unsigned integer) است که برای نگه‌داری اندازه‌ها و تعدادها طراحی شده است.
این نوع داده هرگز نمی‌تواند عدد منفی باشد — چون منفی بودن برای «تعداد عناصر» یا «طول یک آرایه» معنی ندارد!

اندازه‌ی دقیق size_t بسته به پلتفرم متفاوت است: — در برد‌های AVR (مثل Uno): ۲ بایت → محدوده: ۰ تا ۶۵,۵۳۵
— در برد‌های ۳۲ بیتی (مثل ESP32 یا Due): ۴ بایت → محدوده: ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵

هدف اصلی size_t این است که کدها را قابل انتقال‌تر (portable) کند — چون همیشه به اندازه‌ی طبیعی پردازنده برای ذخیره‌ی اندازه‌ها تنظیم می‌شود.

چرا size_t وجود دارد؟

بسیاری از توابع استاندارد آردوینو و کتابخانه‌های C++ (مثل strlen()، sizeof()، یا String.length()) مقدار بازگشتی خود را به عنوان size_t تعریف می‌کنند.
مثال:

String message = "سلام";
size_t len = message.length();  // len = 4 (تعداد کاراکترها)

اگر شما از int برای ذخیره‌ی این مقدار استفاده کنید، در برد‌های ۳۲ بیتی ممکن است هشدار کامپایلر دریافت کنید یا در موارد نادر، سرریز رخ دهد.
اما با size_t، همیشه با نوع صحیح کار می‌کنید.

نحوه استفاده در عمل

شما معمولاً size_t را در متغیرهایی می‌بینید که با حلقه‌های شمارشی یا اندازه‌ی آرایه‌ها سروکار دارند:

int values[] = {10, 20, 30, 40};
size_t count = sizeof(values) / sizeof(values[0]);  // count = 4

for (size_t i = 0; i < count; i++) {
  Serial.println(values[i]);
}

استفاده از size_t در حلقه‌ها نه‌تنها منطقی‌تر است (چون شمارنده هرگز منفی نمی‌شود)، بلکه با استانداردهای برنامه‌نویسی مدرن هم هماهنگ است.

مثال کاربردی: خواندن تمام کاراکترهای یک رشته

void printString(const char* str) {
  size_t len = strlen(str);  // strlen() از size_t استفاده می‌کند
  
  for (size_t i = 0; i < len; i++) {
    Serial.print("کاراکتر ");
    Serial.print(i);
    Serial.print(": ");
    Serial.println(str[i]);
  }
}

نکته طلایی ۱: size_t برای مبتدی‌ها الزامی نیست — اما حرفه‌ای‌ها از آن استفاده می‌کنند!

اگر شما مبتدی هستید، کاملاً می‌توانید از int یا unsigned int برای شمارنده‌ها استفاده کنید و مشکلی پیش نمی‌آید.
اما وقتی کد شما بزرگ‌تر می‌شود یا می‌خواهید آن را با دیگران به اشتراک بگذارید، استفاده از size_t نشان‌دهنده‌ی سبک برنامه‌نویسی حرفه‌ای است — چون دقیقاً همان نوعی را به کار می‌برید که سیستم استفاده می‌کند.

نکته طلایی ۲: size_t همیشه مثبت است — پس از مقایسه با اعداد منفی خودداری کنید!

چون size_t بدون علامت است، اگر آن را با یک عدد منفی مقایسه کنید، نتیجه غیرمنتظره خواهد بود:

size_t x = 5;
if (x > -1) {
  // این شرط FALSE است! چون -1 به عدد بسیار بزرگی تبدیل می‌شود
  Serial.println("این چاپ نمی‌شود!");
}

بنابراین، هرگز size_t را با اعداد منفی مقایسه نکنید — و همیشه به یاد داشته باشید: این نوع فقط برای مقادیر ≥ ۰ طراحی شده است.

جمع‌بندی

  • size_t = نوعی برای اندازه‌ها و تعدادها
  • همیشه بدون علامت (مثبت یا صفر)
  • اندازه‌اش بسته به برد تغییر می‌کند (۲ یا ۴ بایت)
  • توابعی مثل strlen() و sizeof() از آن استفاده می‌کنند
  • برای مبتدی‌ها اختیاری، برای حرفه‌ای‌ها توصیه‌شده

منبع رسمی

این مطلب بر اساس مستندات رسمی Arduino از بخش size_t – Language Reference تهیه شده است، با توضیحات ساده‌شده، مثال‌های کاربردی و نکات طلایی منحصربه‌فرد برای جامعه فارسی‌زبان.

  انتشار : ۱۲ مهر ۱۴۰۴               تعداد بازدید : 301

برچسب های مهم

http://kia-ir.ir

تمام حقوق مادی و معنوی این وب سایت متعلق به "آردوینو ایران | آموزش تخصصی آردوینو به فارسی" می باشد

فید خبر خوان    نقشه سایت    تماس با ما