تجاوز السعة: + مقابل +% مقابل +|
الحساب المتسبب في خطأ، والملتَف، والمتشبع
تجاوز السعة: + مقابل +% مقابل +| درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.
للأعداد حدود
لكل عدد صحيح محدد الحجم قيمة قصوى يمكنه تخزينها. فإذا تجاوزتها، وصلت إلى تجاوز السعة؛ أي اللحظة التي تحاول فيها القيمة تخطي نطاقها.
تكتشف Zig تجاوز السعة
بشكل افتراضي، يعترض المعامل + العادي تجاوز السعة. وفي البناء الآمن، يؤدي تجاوز الحد إلى إيقاف البرنامج بدلًا من إفساد القيمة.
var x: u8 = 255;
x = x + 1; // panics: overflowلماذا يفيد الاعتراض
إنهيار واضح أفضل من إجابة خاطئة صامتة. إذ يحول الاعتراض الخطأ الخفي إلى فشل واضح يمكنك العثور عليه وإصلاحه بسرعة.
الحساب الالتفافي باستخدام +%
قد تريد أحيانًا أن تلتف القيمة عمدًا. يطبق المعامل +% الالتفاف، لذلك تصبح 255 + 1 في u8 مساوية لـ 0.
var x: u8 = 255;
x = x +% 1; // 0متى يكون الالتفاف مناسبًا
يكون الالتفاف مناسبًا للعدادات وقيم التجزئة والمجاميع الاختبارية التي يكون فيها تجاوز النهاية مقصودًا. وتطلبه باستخدام اللاحقة %، وليس عن طريق الخطأ.
الحساب التشبعي باستخدام +|
يثبت المعامل +| القيمة عند الحد بدلًا من تطبيق الالتفاف. فتبقى u8 عند 255 إذا كانت قيمتها 255، وهذا مثالي للقيم التي يجب ألا تتجاوز سقفًا معينًا.
var x: u8 = 255;
x = x +| 1; // 255ثلاثة خيارات وقرار واحد
إذًا يعترض +، ويطبق +% الالتفاف، ويطبق +| التشبع. اختر السلوك الذي يطابق نيتك، واجعل معالجة تجاوز السعة صريحة في شيفرتك.
الثلاثية نفسها للطرح
لا تقتصر هذه اللواحق على الجمع. إذ توفر -, -%، و-| طرحًا مع الاعتراض أو الالتفاف أو التشبع بالطريقة نفسها.
var x: u8 = 0;
x = x -| 1; // 0وللضرب أيضًا
يتبع الضرب النمط نفسه: *, *%، و*|. وتنطبق القاعدة الوحيدة، وهي اختيار سلوك تجاوز السعة، على معاملات الحساب كلها.
const big = a *% b; // wrap on overflowتظل البنى الافتراضية آمنة
في وضعي Debug وReleaseSafe، تتحقق المعاملات العادية من تجاوز السعة. ولا تتخلى عن ذلك إلا إذا كان لديك سبب حقيقي لاستخدام الالتفاف أو التشبع.
تظهر النية في الشيفرة
لأن لكل سلوك رمزه الخاص، يرى القارئ نيتك بشأن تجاوز السعة بنظرة واحدة. فلا شيء مفترض؛ فالمعامل يوضح كل شيء.
تحقق سريع
تريد أن يلتف عداد u8 من 255 عائدًا إلى 0. أي معامل تستخدم؟
مراجعة: اختر طريقة تجاوز السعة
يعترض الحساب العادي، وتطبق لاحقة % الالتفاف، وتطبق لاحقة | التشبع. اختر بعناية، ولن يكون تجاوز السعة مفاجأة مخفية. 🛡️
الأسئلة الشائعة
هل درس «تجاوز السعة: + مقابل +% مقابل +|» مجاني؟
نعم — نص درس «تجاوز السعة: + مقابل +% مقابل +|» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.
ماذا ستتعلم في «تجاوز السعة: + مقابل +% مقابل +|»؟
الحساب المتسبب في خطأ، والملتَف، والمتشبع تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟
لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تجاوز السعة: + مقابل +% مقابل +|»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟
نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عوامل الحساب والمقارنة
- تجاوز السعة: + مقابل +% مقابل +|
- العوامل على مستوى البتات
- المنطق المنطقي والتقييم قصير الدارة