Avatar ·

لماذا لا يمكن في C++ التصريح عن متغيرات داخل switch-case بدون أقواس معقوفة؟

مرحباً بالجميع! لقد بدأت للتو في تعلم C++ بعد Python، وواجهت مشكلة غريبة. عندما أكتب switch-case عادي، يشتكي المترجم من التصريح عن المتغيرات داخل case. إليك مثال على كود لا يعمل لدي: ```cpp #include int main() { int value = 2; switch (value) { case 1: int x = 10; // خطأ! std::cout << "Case 1: " << x << std::endl; break; case 2: int y = 20; // خطأ أيضاً! std::cout << "Case 2: " << y << std::endl; break; default: std::cout << "Default" << std::endl; } return 0; } ``` المترجم (GCC) يعطي أخطاء مثل "jump to case label" و "crosses initialization of variable". أفهم أن switch-case ليس دالة أو كتلة كود، لكن لماذا لا يمكن ببساطة التصريح عن متغير داخل case؟ ففي Python أو JavaScript يعمل هذا بشكل طبيعي. أضطر إلى إخراج التصريحات لجميع المتغيرات