C++学习插曲:“name“的初始化操作由“case“标签跳过

作者 : admin 本文共644个字,预计阅读时间需要2分钟 发布时间: 2024-06-10 共2人阅读

问题

"name"的初始化操作由"case"标签跳过

C++学习插曲:“name“的初始化操作由“case“标签跳过插图
问题代码

case 3: // 3、删除联系人
	string name;
	cout << "请输入删除联系人姓名:" << endl;
	cin >> name;
	if (isExistPerson(&abs, name) == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "找到此人" << endl;
	}
	break;

解决

case下的语句放到{}里面包裹

case 3: // 3、删除联系人
{
	string name;
	cout << "请输入删除联系人姓名:" << endl;
	cin >> name;
	if (isExistPerson(&abs, name) == -1)
	{
		cout << "查无此人" << endl;
	}
	else
	{
		cout << "找到此人" << endl;
	}
	break;
}

原因

case中的代码只有一行的时候,不需要添加{},可以直接编写代码;

但是,当case中的代码不止一行的时候,需要把代码放到{}中。

如果你想在case标签下有一个或多个语句作为一个代码块来执行,那么你应该使用花括号。这有助于确保逻辑上的分组,并防止意外的fall-through行为(即,一个case的代码块执行完后不会自动跳到下一个case)

switch (variable) {  
    case 1:  
        // 单个语句,不需要花括号  
        doSomething();  
        break;  
    case 2:  
        // 如果有多个语句,建议使用花括号  
        {  
            doSomethingElse();  
            doAnotherThing();  
        }  
        break;  
    // ...  
}
本站无任何商业行为
个人在线分享 » C++学习插曲:“name“的初始化操作由“case“标签跳过
E-->