它是否可行/是否允许使用switch-case语句并在语句中更改密钥?
例如:
temp = 1
switch(temp)
{
case 1:
temp = 2;
//Do something with temp..
break;
}
这样做的关键在于我不必创建另一个变量,在我的程序中这样做也是有意义的。我并不是要求在switch-case语句中更改为另一个案例,只要它允许重用用作键的变量而没有任何副作用。
答案 0 :(得分:4)
这很好。事实上,这个星球上的每台状态机都会做与你在这里做的事情相同的事情。
答案 1 :(得分:3)
是的,你可以这样做。事实上,以下是编写lexers的常见做法:
int c = getc(file);
switch(c)
{
case '+':
c = getc(file); // < `c` modified here!
switch(c)
{
case '+': return OP_INC;
default: ungetc(c, file); return OP_ADD;
}
...
}
答案 2 :(得分:0)
虽然使用相同的变量并不是一个好主意,但是代码将起作用,因为分支是在评估switch语句中的表达式时确定的。