C++ 如何阻止在switch语句中跳过初始化变量?

C++ 如何阻止在switch语句中跳过初始化变量?,c++,C++,我对编程相当陌生,我一直在用switch语句制作一个简单的菜单,因为我不断得到一个“错误C2360‘total’的初始化被‘case’标签跳过”。我不知道为什么会发生这种情况,也不知道如何解决它!感谢您的帮助/批评:D #include <iostream> #include <iomanip> using namespace std; int main() { int choice; double a, b;

我对编程相当陌生,我一直在用switch语句制作一个简单的菜单,因为我不断得到一个“错误C2360‘total’的初始化被‘case’标签跳过”。我不知道为什么会发生这种情况,也不知道如何解决它!感谢您的帮助/批评:D

#include <iostream>
#include <iomanip>
using namespace std; 

    int main()
    {
        int choice; 
        double a, b;
        
        //MENU
        cout << setw(20) << setfill('-') << "" << "MENU" << setw(20) << setfill('-') << "" << endl; 
        cout << "1. Addition " << endl; 
        cout << "2. Subtraction " << endl;
        cout << "3. Multiplication " << endl;
        cout << "4. Division " << endl;
        cout << endl; 
        //USER INPUT
        cout << "What would you like do do? "; 
        cin >> choice; 
        cout << endl; 
        //SWITCH CASE 
        switch (choice)
        {
        case 1:
            cout << "Enter 2 numbers: ";
            cin >> a >> b;
            long double total = (a + b); 
            cout << "The total is: " << total;
            cout << endl;
        break;
        
        case 2:
            cout << "Enter 2 numbers: ";
            cin >> a >> b;
            long double totalM = (a * b); 
            cout << "The total is: " << totalM;
            cout << endl;
        break; 
        }
    
    
    
        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
智力选择;
双a,b;
//菜单

cout您需要将您的个别案例的内容放在大括号内。这种范围界定实际上总是可以完成的,但仅当您是表中的新变量时才需要

int i;
switch(i)
{
    case(1):
    {
         int newVariable;
         // ... do stuff
    }
    break;
}

我的建议是尽量减少代码的重复。我的意思是,如果所有4个选项都要求2个数字,则不必在切换中这样做。如果所有4个选项都将打印一个长双精度的总数,则也不必在切换中这样做。