C++ switch语句即使在不需要时也输出默认语句

C++ switch语句即使在不需要时也输出默认语句,c++,switch-statement,default,C++,Switch Statement,Default,当我运行代码时,它会将输出提供给我的一个案例,但随后也会输出默认语句,即使它不是必需的。我不知道如何解决这个问题。我已经尝试将默认语句只放在最后一个switch语句中,这使得它只输出默认语句一次而不是多次,但是它仍然会输出默认语句一次,即使它不需要这样做 #包括 使用名称空间std; int main(){ int x,b,t,s,p; cout x; 开关(x){ 案例1: cout b; 打破 案例2: 库特; 打破 案例3: 库特; 打破 案例4: cout-p; 打破 违约: cout您

当我运行代码时,它会将输出提供给我的一个案例,但随后也会输出默认语句,即使它不是必需的。我不知道如何解决这个问题。我已经尝试将默认语句只放在最后一个switch语句中,这使得它只输出默认语句一次而不是多次,但是它仍然会输出默认语句一次,即使它不需要这样做

#包括
使用名称空间std;
int main(){
int x,b,t,s,p;
cout x;
开关(x){
案例1:
cout b;
打破
案例2:
库特;
打破
案例3:
库特;
打破
案例4:
cout-p;
打破
违约:

cout您的代码有未定义的行为,因为您正在将未初始化的变量传递给
开关
语句

如果用户在第一次提示时输入
1
,则只有变量
x
b
被赋值,但代码仍然尝试评估变量
t
s
p
,即使它们的值不确定,因此所有这些辅助
开关
块的概率都非常高调用它们的
默认情况的可能性

其他用户选择也一样

要解决此问题,您需要将辅助
开关
块嵌套在第一个
开关
块的每个
案例
中,如下所示:

#包括
使用名称空间std;
int main(){
int输入;
不能输入;
开关(输入){
案例1:{
不能输入;
开关(输入){
案例1:{

cout您的代码有未定义的行为,因为您正在将未初始化的变量传递给
开关
语句

如果用户在第一次提示时输入
1
,则只有变量
x
b
被赋值,但代码仍然尝试评估变量
t
s
p
,即使它们的值不确定,因此所有这些辅助
开关
块的概率都非常高调用它们的
默认情况的可能性

其他用户选择也一样

要解决此问题,您需要将辅助
开关
块嵌套在第一个
开关
块的每个
案例
中,如下所示:

#包括
使用名称空间std;
int main(){
int输入;
不能输入;
开关(输入){
案例1:{
不能输入;
开关(输入){
案例1:{

CUT考虑将特定于每项运动的代码移动到一个你可以调用的函数中。现在,即使没有选择该项,它也会跳过一行中的所有开关。因为变量没有初始化,这是谁的猜测。函数是什么意思?你能给我举个例子吗?我对COD很陌生。ing。请学习正确缩进你的代码。它使你更容易遵循执行流程,也使你的代码更容易阅读、理解和维护。我已经正确缩进了,但这个网站让我将所有内容从左边隔开4次,否则它不会作为代码上传:)我的编辑器,vscode,就像大多数程序员的编辑器一样RS将缩进一个完整的文件。只是HelyType和Head Tab。考虑将特定于每个运动的代码移动到一个可以调用的函数。现在,即使在没有选择该项的情况下,它也会通过行中的所有开关。关于?你能给我举个例子吗?我对编码很不熟悉。请学习正确缩进你的代码。这使你的代码更容易遵循执行流程,也使你的代码更容易阅读、理解和维护。我对它进行了正确的缩进,但这个网站让我将所有内容从左边隔开4倍,否则它不会上传广告作为代码:)我的编辑器,vscode,像大多数程序员的编辑器一样,会缩进整个文件。只需点亮所有内容并点击tab。另外“案例1”与“案例1'”@John5342代码读取的是整数,而不是字符,所以
case1
是正确的。我很抱歉。凌晨3点浏览校对是个坏主意,还有“案例1”与“案例1'”@John5342代码读取的是整数,而不是字符,因此
案例1
是正确的。我很抱歉。凌晨3点浏览校样是个坏主意