Mohssen A Mohssen نشر 23 نوفمبر 2021 أرسل تقرير نشر 23 نوفمبر 2021 أجد في كثير من الأحيان أكواد غريبة لتهئية initialize المتغيرات وبعضها بدون علامة = حتى، ولا أعرف الفرق بين هذه الطرق أو متى أستعمل أحدها، ما الفرق بين الأكواد التالية؟ int a; int b = 5; int c( 6 ); 1 اقتباس
1 سامح أشرف نشر 23 نوفمبر 2021 أرسل تقرير نشر 23 نوفمبر 2021 تحتوي لغة ++C على أربع طرق أساسية لتهيئة المتغيرات، وهي كالتالي: الطريقة الأولى: تعريف المتغير بدون تهيئة قيمة أولية للمتغير int a; نستخدم هذه الطريقة عندما نريد تخزين قيمة في وقت لاحق، كما في الكوطد التالي: int age; std::cin >> age; // نخزن العمر بعد أن يقوم المستخدم بإدخال الرقم أو في حالة أردنا إستخدام متغير عام داخل أحد المجالات المحلية، وقد ذكرت هذا الأمر هنا: الطريقة الثانية: هي تهيئة النسخ copy initialization، وهي الطريقة العادية المتبعة في أغلب لغات البرمجة: int width = 5; تسمى هذه الطريقة بهذا الاسم، لأنها تقوم بنسخ القيمة الموجودة على اليمين إلى المتغير الموجود على اليسار.، ويفضل إتباع هذه الطريقة في الحالات العادية، ولكن هناك حالات أكثر تعقيدًا لن يمكننا أن نستخدم فيها هذه الطريقة. الطريقة الثالثة: هي التهيئة المباشرة Direct initialization int width( 5 ); الطريقة السابقة هي نفسها المستخدمه في طريقة تهئية النسخ، ولكن بالنسبة الحالات الأكثر تعقيدًا ، تميل التهيئة المباشرة إلى أن تكون أكثر كفاءة من تهيئة النسخ. الطريقة الرابعة والأخيرة: هي التهيئة باستخدام الأقواس Brace initialization (وتسمى أيضًا بـ uniform initialization أو list initialization) يمكن إستخدام هذه الطريقة بثلاث أشكال: int width { 5 }; // يفضل إتباع هذه الطريقة int height = { 6 }; // نفس الطريقة السابقة int depth {}; // تسمى بـ value initialization هناك بعض الحالات التي لا يمكن فيها إستخدام تهئية النسخ أو التهيئة المباشرة، فعلى سبيل المثال في الكود التالي سوف يحدث خطأ: int width { 4.5 }; // Error في الكود السابق نحاول تخزين القيمة 4.5 (وهي قيمة من نوع double) في المتغير width ولكن نوع المتغير هو رقم صحيح int وبالتالي يظهر خطأ بسبب إختلاف الأنواع، لن يظهر هذا الخطأ إن كانت القيمة صحيح (4.0 أو 4). بينما إن تم إستخدام طريقة تهيئة النسخ أو التهيئة المباشرة سوف يتم تجاهل القيمة العشرية بالكامل وسكون الرقم هو 4 فقط، مما قد يؤدي إلى أخطأ وقت التشغيل يصعب إكتشافها وإصلاحها. لذلك يفضل التهيئة باستخدام الأقواس كلما أمكن ذلك. 1 اقتباس
السؤال
Mohssen A Mohssen
أجد في كثير من الأحيان أكواد غريبة لتهئية initialize المتغيرات وبعضها بدون علامة = حتى، ولا أعرف الفرق بين هذه الطرق أو متى أستعمل أحدها، ما الفرق بين الأكواد التالية؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.