البرمجة

فحص وتفسير: برنامج C يُظهر نتائج مفاجئة

في البداية، يتعين علينا فهم الشيفرة البرمجية التي قدمتها بلغة البرمجة C. يظهر البرنامج أدناه:

c
#include int main(void) { int i=10; if(i==(20||10)) printf("True"); else printf("False"); return 0; }

هذا البرنامج يقوم بتعريف دالة main، وهي النقطة التي يبدأ منها تنفيذ البرنامج. تم تعيين قيمة 10 للمتغير i. ثم يتم استخدام هيكل التحكم if-else لفحص ما إذا كانت قيمة i تساوي (20 أو 10). إذا كانت القيمة تساوي أحد القيمتين، سيتم طباعة “True”، وإلا سيتم طباعة “False”.

والآن دعونا نقوم بتفسير كيف يتم تقييم الشرط في السطر:

c
if(i==(20||10))

هنا تتم مقارنة قيمة i مع التعبير (20||10). يتم تقييم 20||10 باعتباره تعبير منطقي، حيث يعبر || عن عملية الـ OR اللوجيكية. في هذه الحالة، إذا كانت إحدى القيمتين صحيحة، فإن النتيجة ستكون صحيحة.

وهنا يكمن السبب في أن الشرط يعتبر دائمًا صحيحًا. لأن قيمة i تساوي 10، وبما أن الشرط يستخدم 20||10 وهو تعبير منطقي، فإنه سيعتبره صحيحًا، لأن 10 هو قيمة صحيحة.

لذلك، عند تشغيل البرنامج، سيتم طباعة “True” بناءً على قيمة المتغير i وتقييم الشرط.

يجدر بنا دائمًا أن نكون حذرين وواعين عند كتابة الشروط اللوجيكية للتأكد من أنها تعكس النتائج المتوقعة بناءً على المطلوب من البرنامج.

المزيد من المعلومات

للتوضيح أكثر، دعونا نقوم بفحص الكود بشكل أفضل ونشرح التفاصيل الفنية لفهم كيف يتم تفسيره ولماذا يؤدي إلى إخراج “False”.

السطر الرئيسي في الكود هو:

c
if(i==(20||10))

في هذا السياق، يتم تقييم التعبير 20||10 أولاً. عملية || تعبر عن المنطق اللوجي “أو”، وتعطي قيمة صح إذا كان أي من العبارتين على الجانبين له قيمة صح. في هذه الحالة، 10 هو قيمة صحيحة.

بالتالي، التعبير بأكمله يصبح:

c
if(i==1)

حيث أن قيمة 20||10 هي 1 (وهو ما يمثل الصح). وبما أن قيمة i تساوي 10، فإن الشرط يصبح:

c
if(10==1)

هذا الشرط يعود بنتيجة “False”، لأن 10 لا تساوي 1. وبالتالي، يتم تنفيذ الفرع الآخر من التعبير if-else، والذي يقوم بطباعة “False”.

تحقق من قيم المتغيرات والتعابير بعناية دائماً عند كتابة الشروط في البرمجة، حيث يمكن أن تكون هذه التفاصيل الدقيقة هي الفارق بين إنجاح وفشل البرنامج.

مقالات ذات صلة

زر الذهاب إلى الأعلى

المحتوى محمي من النسخ !!