لماذا لا يمكن تعريف المتغيرات داخل كتلة switch في C++ بدون الأقواس المعقوفة؟
مرحباً بالجميع! بدأت تعلم C++ وواجهت خطأً غريباً جداً عند استخدام switch. كنت بحاجة لكتابة آلة حاسبة بسيطة تنفذ عمليات مختلفة حسب الرمز المُدخل. إليك الكود الخاص بي:
```cpp
#include
using namespace std;
int main() {
char op;
int a = 10, b = 5;
cout << "Enter operation (+, -, *, /): ";
cin >> op;
switch (op) {
case '+':
int result = a + b; // خطأ!
cout << result;
break;
case '-':
// ...
break;
}
return 0;
}
```
يُصدر المترجم خطأ: "cannot jump from switch statement to this case label" أو شيء مثل "initialization of 'result' is skipped by 'case' label". أفهم أن switch يعمل مثل goto ويقفز إلى التسمية المطلوبة، لكن لماذا لا يمكن تعريف متغير مباشرة داخل case؟ فأنا أكتبه بعد النقطتين وقبل break التالي. ما هي المشكلة هنا وكيف يمكن التعريف بشكل صحيح؟