عندما تنفد سعة 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 عندما تكون الأعداد صغيرة.
التحدي
متوسطيضيف البرنامج الابتدائي 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);
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الدوائر الأولى
2التواصل مع حاسوبك
مرحبًا، Serial MonitorPrint مقابل Printlnطباعة الأعدادمتغيرك الأولالعد التصاعديعندما تنفد سعة Intتدرّب بنفسك: Playground لـ Arduino