سؤال عن تعليمة return بلغة c

السلام عليكم:

ما هو الفائدة من تعليمة (;return 0) اذا أخبرت نظام التشغيل أن البرنامج قد نُفِّذ بدون أخطاء و مشاكل؟

طالما أنّ البرنامج سيُنفذ إن وضعنا ;(return 0;) or (return 1) أو أيّ قيمة؟

ممكن أخواتي أن تشرحوا لي هذه الفكرة حتّى تتّضح لي أكثر؟

و شكراً

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

تخيل أنك صنعت برنامجً يقوم بترتيب الملفات

ثم جاء مبرمج أخر غيرك واستخدامه في برنامجه

كيف سيعرف أن العملية فشلت؟

أخي ممكن أن توضح الفكرة أكثر؟

حسنا ^-^

ما المترجم Compiler الذي تستخدمه؟ لكي أضرب لك مثالا واضحا

NetBeans IDE و اللغة طبعاً (C)

سنصنع برنامجين

البرنامج الأول هو B يعيد قيمة 100

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("I am B!\n");
    return 100;
}

البرنامج A يشغل B ويطبع القيمة التي أعادها #include #include int main() { printf("I am A!\n"); int x = system("B.exe"); printf("return: %d",x); return 0; }

-

إذا واجهتك مشكلة أخبرني ^-^

الكود الأخير بشكل منظم

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("I am A!\n");
    int x = system("b.exe");
    printf("return: %d",x);
    return 0;
}

أما لماذا البرامج تعيد قيمة؟

فالجواب لأن بعض البرامج تحتاج أن تخبر البرنامج المشغل لها عن حالة العملية هل نجحت أم لا

مثلا مفسر روبي يعيد قيمة 9009 إذا لم يجد الملف الذي طلبت تنفيذه

الفكرة من استخدام return في الدوال Functions هو نوع الدالة نفسها. ففي لغات البرمجة تجد أن هناك دالة مسبوقة بكلمة Void وهي تُخبر المُفسّر بعدم توقع أي قيمة من هذه الدالة. أما في حالة عدم استخدام Void، فالمفروض أن يتم إعادة قيمة من هذه الدالة، لهذا السبب تجد return.

أخي أقصد أن إرجاع القيمة صغر تعني أنه تم تنفيذ البرنامج دون أخطاء ، أقصد كيف نقوم بتمرير شي نحن نفرضه (أي نفذ بأخطاء أو بدون أخطاء) ؟ حيث أن compiler يقوم بقراءة البرنامج و بكتب لنا أنه تم التنفيذ بنجاح و لكن إذا لم نكتب return 0 فإنه يظهر لأن في التنفيذ خطأ مع تنفيذ البرنامج بشكل صحيح؟

إذا كنت تتحدث عن الدالة main() فهي الدالة الرئيسية في لغة c أو c++ وهذا جزء من تعريف اللغة. بالنسبة للمُفسّر، وجود هذه الدالة ضروري، لذا فإنه يفهم أنه عند إعادة القيمة 0، أن الدالة الرئيسية لتشغيل البرنامج عملت دون مشاكل. هذا جزء من تعريف اللغة بالنسبة للدالة main().

نعم أخي أتحدّث عن الدّالة الرئيسيّة main

و أقصد تماماً : مالفكرة من إخبارنا نظام التشغيل أن الدالة عملت دون مشاكل ؟ بما أنّ البرنامج سينُنفّذ حتى و ان أخبرنا نظام التشغيل أنّه توجد أخطاء في عمل البرنامج (;return 1) مثلاً؟؟

عندما يكون لدي ملف واحد أريد عمل كومبيل له استخدم هذا السطر:

$ cc mysinglefile.c && ./a

هذا السطر يقوم بترجمة mysinglefile.c وتشغيل البرنامج في حالة نجاح الترجمة فقط. يعني إيه نجح؟ يعني رجع صفر. لو كاتب الكومبيلر الذي اسمه cc قرر ان يرجع 1000- ستقوم بيئة الأوامر بإعتبار أن الترجمة فشلت ولن يتم استدعاء برنامجي (على عكس الحقيقة).

نقول مثلا ان برنامجك اسمه download وينزل ملف من على الإنترنت ونريد كتابة "Hello" بعد تمام التنزيل:

  download file && echo "Hello"

في حالة أنك لم تلتزم بإرجاع 0 من برنامجك حالة النجاح وارجع قيمة أخرى حالة الفشل (الفشل يعني ظروف تطرأ أثناء عمل البرنامج. عدم وجود عالملف مثلا أو عدم وجود الشبكة ذاتها) لن يكون هذا السطر قابلة للإستعمال.

أي أنه لضمان انه يمكن استعمال && وغيرها في سطر الأوامر رجع قيمة مناسبة.

قيمة العائد 0 تعني نجاح البرنامج. وأن يكون العائد غير الصفر له معنى يعريفه النظام. وعادة يشير إلى نوع الخطأ الذي حدث. مثلا error C2146