【发布时间】:2014-02-23 21:24:42
【问题描述】:
它会起作用/是否允许使用 switch-case 语句并更改语句中的键?
例如:
temp = 1
switch(temp)
{
case 1:
temp = 2;
//Do something with temp..
break;
}
这样做的意义在于我不必创建另一个变量,而且在我的程序中这样做也很有意义。我不是要在 switch-case 语句中更改为另一种情况,只要允许重用用作键的变量而没有任何副作用。
【问题讨论】:
-
是的,它会按预期工作。
-
你的观点毫无意义。只需创建另一个变量。它不会受到伤害,它使您的代码更易于他人阅读和理解。将详细信息留给您的编译器。
-
这可行,但您应该几乎肯定会创建另一个变量。你似乎在重复使用一个——但有无穷无尽的供应,所以没必要吝啬它们。几乎所有变量都应该被考虑(或实际制作)
const。 (编辑:这条规则的大例外:状态机,正如几个答案所指出的那样。我怎么会忘记这一点?) -
开关只是对 case 的二分查找和代码的跳转。一旦跳转完成, switch 语句就没有进一步的效果,所以改变变量就可以了。我在嵌入式系统中经常这样做:在 case 结束时将 switch 变量设置为下一个 case 的值并退出函数,以便稍后再次调用它时,它将从中断的地方重新开始。
标签: c++ c switch-statement