[c++]ما سبب هذ التحذير ؟

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

التعليقات

اولا اخي لايمكن عمل cast من non const الي const

ثانيا اذا اردت ان تقوم بعمل المصفوفه بهذه الطريقه يجب عليها ان تكون داينمك

https://codeshare.io/G6XOyz

كبداية شكرا لك

لكن هل لديك شرح للdynamic arrays ? وما الفرق بينها و بين arrays عادية ؟

هل درست البوينتر ؟ اذا درسته سوف تفهم لكن سوف اشرح لك

الفرق بين الداينمك و الستاتك

ف علي سبيل المثال عندما تقوم بتعريف متغير ( ستاتك ) مثلا int a; ف هذا المتغير سوف يتم تعريفه اثناء عمل كومبايل للبرنامج

اما ف حاله الداينمك مثلا int *a = new int; فسوف يتم تعريف هذا المتغير اثناء عمل البرنامج ( Run time ) وهذا المطلوب ف حالتك لانك ماتعرف حجم المصفوفه الا بعد الادخال من المستخدم اي انه خلال run time

لكن لابد ان تقوم بحذف المتغير عند الانتهاء منه delete .

احذف سطر

#include <windows.h>

لماذا ؟ من دونه لن تعمل الدالة system ...

لأني وضعت الكود في محرر أونلاين وأعطى التحذير أن الدالة غير معرفة فأزلتها واشتغل طبيعي، فافترضت أن هذا هو المقصود.

بديهي أي محرر أونلاين غالبًا غالبًا لينكس GCC أو Clang لا أحد يستخدم أشياء ميكروسوفت في هكذا أشياء.

نعم لكن البرنامج عمل بدون أخطاء أو تحذير، والذي مفترض أن يظهر على الأقل الخطأ أو التحذير الذي يقصده السائل.

أو ربما أن مستوى التحذير مختلف بين ما يستخدمه وبين الذي جربت عليه.

تحذير أم خطأ؟

تحذير (warning) في السطر 10

لأن الـCasting هنا خطأ وأصلا بلا فائدة لمَ تصنع كاستنج بين متغير إلى ثابت وفي النهاية لا تستخدم الناتج من العملية؟

احذف السطر العاشر.

(const int)input;

صحيح انا لا استخدم نتائج العملية

لكني قمت بعمل casting من int إلى const int لانه كما تعلم (في المصفوفات) لا يجوز وضع غير الـ const variables كـ size للــمصفوفة .

على كل حال شكرًا لك .

حسنا هذا لا يجوز، لأن حجم المصفوفة يجب توفيره في وقت التجميع وليس وقت التنفيذ، الأمور لا تعمل هكذا استخدم malloc وalloc إذا كنت تريد مصفوفات بحجم ديناميكي.

ما هي عبارته؟