Mohssen A Mohssen نشر 28 نوفمبر 2021 أرسل تقرير نشر 28 نوفمبر 2021 أجد في كثير من الأحيان يتم إستعمال كلمة const لتحديد قيمة ثابت وأيضًَا أجد أنه يتم إستعمال constexpr في نفس الكود بدون معرفة الفرق بينهما، لذلك أريد أن أعرف الفرق بين النوعين ومتى أستخدم كل واحد منهما؟ 1 اقتباس
1 سامح أشرف نشر 28 نوفمبر 2021 أرسل تقرير نشر 28 نوفمبر 2021 النوع الأول const عبارة عن ثابت يحمل قيمة من نوع معين، ويكتب على الصيغة التالية: // const const_name = value; cosnt age = 18; وهذا الثابت يتم جسابه وتخزين قيمته أثناء وقت التشغيل Run Time مثل المتغيرات العادية، ولكن لا يمكن تغير قيمته لاحقًا، وبالتالي إن حاولت تنفيذ الكود التالي سوف يظهر لديك خطأ: const int age{123}; age = 18; // Error: expression must be a modifiable lvalue بينما النوع الثاني constexpr هو ثابت أيضًا ولكن يتم حسابه وتخزينه أثناء عملية التصريف Compile Time ويجب أن تكون قيمته محددة بالفعل قبل تشغيل البرنامج حتى، وبالتالي يجب أن تكون قيمته معروفة من البداية، لذلك سوف يظهر لديك خطأ إن حاولت أن تقوم بتنفيذ الكود التالي: int age{}; std::cin >> age; const int myAge{ age }; int age2{}; std::cin >> age2; constexpr int myAge{ age2 }; // Error: age2 is a runtime constant, not a compile-time constant الجزء الأول من الكود سوف يعمل بدون مشكلة، بينما الجزء الثاني سوف تظهر فيه مشكلة تخبرك بأن age2 عبارة عن ثابت يتم حسابه أثناء عملية التنفيذ run time. لذلك نستنتج أنه: يجب التصريح عن أي متغير لا يمكن تعديله بعد التهيئة والذي تمت تهيئته في وقت التصريف على أنه constexpr. يجب التصريح عن أي متغير لا يمكن تعديله بعد التهيئة ومبدئه غير معروف في وقت التصريف على أنه const. 1 اقتباس
السؤال
Mohssen A Mohssen
أجد في كثير من الأحيان يتم إستعمال كلمة const لتحديد قيمة ثابت وأيضًَا أجد أنه يتم إستعمال constexpr في نفس الكود بدون معرفة الفرق بينهما، لذلك أريد أن أعرف الفرق بين النوعين ومتى أستخدم كل واحد منهما؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.