2012-10-13 18 views
1

我有一个switch语句:如何从案例5调用开关盒4?

switch(choice) 
{ 
case 1: 
//some compute 
break; 
case 2: 
//some compute 
break; 
case 3: 
//some compute 
break; 
case 4: 
//some compute 
break; 
case 5: 
//Call case 3 
//Call case 4 
//perform my own function 
break; 
} 

如何调用的情况下3和4的情况下的功能,然后在执行的情况下我自己的计算5.

我能做的唯一方法是运行相同的情况3的代码,然后情况4,然后我自己的计算,我想知道有没有办法直接调用一个函数,然后返回到情况5.

+0

的http:// stackoverflow.com/questions/8202199/is-it-possible-to-use-goto-with-switch – 2012-10-13 09:17:34

+0

完成。将它们放置在一个函数中并解决所有问题。 –

回答

2

你不能直接做到这一点。你可以把case code放在一个函数中,然后调用该函数。

switch(choice) 
{ 
case 1: 
//some compute 
break; 
case 2: 
//some compute 
break; 
case 3: 
doCase3stuff(); 
break; 
case 4: 
doCase4stuff(); 
break; 
case 5: 
doCase3stuff(); 
doCase4stuff(); 
//perform my own function 
break; 
} 
1

将您的代码放在函数/方法和在相应的情况下调用它们。

+0

如果我把它们放在一个函数中,它会说某些变量没有声明等,因为这些变量是在main中声明的,我应该怎么做 –

+0

@baokychen你的变量是用来在你的函数之间共享/交换信息的吗?如果是的话,你应该使用一个类来打包你的数据和相应的功能。 –

+1

@baokychen在函数中声明这些变量?将它们作为参数传递?将它们定义为静态?将它们定义为全局?这取决于这个代码应该做什么。 – 2012-10-13 09:22:28

1

我最初的想法是,你可以把它变成一个循环,如果5,选择更改为4 或者,如果可能的话,你可以执行递归调用,通过4作为选择的,而不是5.

+0

虽然阅读代码会过于复杂和可怕。 – PherricOxide

1

然后,让案例3和案例4码为两个功能,您可以与没有重复的代码编写有调用它,否则你只能实现通过转到这是不是一个好主意