Menu
CoddyTech
flag Ar iconالعربيةdown icon

عندما تنفد سعة Int

جزء من قسم الدوائر الأولى في رحلة Arduino على Coddy. الدرس 12 من 22.

يُخزَّن المتغير في عدد ثابت من البتات، وهي مفاتيح صغيرة للتشغيل والإيقاف في ذاكرة اللوحة. في Uno، يحتوي int على 16 بتًا، لذا لا يمكنه تخزين سوى أعداد من -32,768 إلى 32,767.

إذا تجاوزت الحد الأعلى، فلن يكبر العدد؛ بل يلتف عائدًا إلى الحد الأدنى. تصبح 32,767 زائد 1 مساويةً لـ -32,768. يُسمى هذا تجاوز السعة، ولا يصدر المخطط البرمجي أي تحذير.

للأعداد الأكبر، استخدم نوعًا يحتوي على عدد أكبر من البتات:

long big = 100000;           // من -2,147,483,648 إلى 2,147,483,647
unsigned long huge = 3000000000;  // من 0 إلى 4,294,967,295

يحتوي long على 32 بتًا. ويحتوي unsigned long على 32 بتًا، لكنه لا يقبل الأعداد السالبة، لذا يمكنه الوصول إلى ضعف القيمة: وهو مناسب للعدّ وقياس الوقت.

يستهلك long ضعف الذاكرة التي يستهلكها int، ولا تتوفر في Uno سوى 2048 بايتًا للمتغيرات، لذا استخدم int عندما تكون الأعداد صغيرة.

challenge icon

التحدي

متوسط

يضيف البرنامج الابتدائي 1000 إلى count عشرين مرة في الثانية. اضغط على تشغيل وشاهده يتحول إلى قيمة سالبة بعد 32,000.

  • غيّر نوع count حتى يتمكن من العد إلى ما بعد 100,000

ثم اضغط على تحقّق.

جرّب بنفسك

int count = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  count = count + 1000;
  Serial.println(count);
  delay(50);
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الدوائر الأولى

تدرّب بنفسك: Playground لـ Arduino